正在进行大型srt *文件4gl

时间:2014-03-06 15:35:59

标签: progress-4gl webspeed

Progress版本11.0 srt *(srt)排序/临时文件在RHEL Linux 6.0中变得非常大。与用于Web应用程序的webspeed一起使用的特定数据库隔离。使用-T switch参数定义文件的位置。不使用-t,因此文件断开连接而不显示在文件系统上。

在shell上执行lsof显示文件增长到GB大小并且增加。第三列是byes的大小:

_mprosrv 29968 3862790144 / usr / temp / srtJrjsxX(已删除)

_mprosrv 31588 15290187776 / usr / temp / srtVEi9Lp(已删除)

_mprosrv 32644 1533157376 / usr / temp / srtTozP1W(已删除)

_mprosrv 32667 3890683904 / usr / temp / srte5qI1U(已删除)

有没有办法限制这些临时文件的大小或阻止它们变得如此之大?

2 个答案:

答案 0 :(得分:1)

不,没有参数可以限制它们。了解您正在做的事情以促进增长是关键。通常它们是缺少适当索引的查询的结果,因此必须由客户端选择和排序记录。

我会:

  • 在客户端启用-t,以便您可以实时监控SRT文件的增长。
  • 启用客户端语句缓存,以便您可以确定在增长发生时哪个源模块负责的代码行上的查询。
  • 使用XREF和DEBUG进行编译,以便您可以查看表扫描的代码(XREF“整个索引”引用)并从语句缓存信息中查找(调试)源代码行
  • http://dbappraise.com/protop.html下载ProTop 3,以便您可以实时监控查询活动
  • 将-noautoresultlist参数添加到客户端启动中(它不是灵丹妙药,但在某些情况下可能有所帮助)
  • 如果碰巧在没有启用客户端语句缓存的情况下捕获客户端“发送”杀死-USR1“然后在protrace中查找并​​检查4gl堆栈跟踪。 (可能在客户的启动目录中)

答案 1 :(得分:1)

如果您使用的是11.0,请考虑升级到11.2或更高版本。

显然存在一个错误(称为缺陷OE00227173,已在11.2中修复),其中一些大型查询导致_mprosrv进程不断增长其.srt文件,而不是按原样重用文件空间。

从发行说明:

  

发行编号:OE00227173       每次执行查询时,临时排序文件都会增长

     

在word-index中运行具有任何通配符的搜索时,搜索   将在数据库服务器上创建一个srt文件。如果查询返回大的   行数(大于100,000)然后排序文件中的空格不是   完全重复使用,.srt可以变得非常大。

通过断开用户会话与相关服务器PID的连接,然后终止服务器进程(最好使用promon R& D,4,7,7),可以找到暂时的缓解。

按服务器PID获取用户的代码:

def var v-pid as int format ">>>>>>>>>9" label "Server PID" no-undo.

do while true:
    update v-pid with frame f1 side-labels.

    find _server where _server._server-pid eq v-pid
        no-lock no-error.
    disp _server with frame f2.

    for each _connect where
        _connect._Connect-Server eq _server._server-num  /** NOT _server-id **/
        no-lock:

        find _userio where _connect._connect-id eq _userio._userio-id
        no-lock no-error.

        disp _connect._Connect-Usr /** NOT _Connect-Id **/
             _connect._Connect-Name
             _connect._Connect-Device
             _connect._Connect-Time
             _connect._Connect-Pid
             _userio._userio-dbaccess
             _userio._userio-dbread
             _userio._userio-dbwrite.

    end.
end.