大型SRT*文件中的4GL



进度版本11.0 srt*(srt)排序/temp文件在RHEL Linux 6.0中的生长非常大。与WebPeed一起用于Web应用程序的特定数据库隔离。使用-t开关参数定义文件的位置。不使用-t,因此文件已断开而不会在文件系统上显示。

在外壳处执行LSOF显示文件生长到GB大小并增加。第三列是大小在外行中的大小:

_MPROSRV 29968 3862790144/usr/temp/srtjrjsxx(删除)

_MPROSRV 31588 1529018776/usr/temp/srtvei9lp(删除)

_MPROSRV 32644 1533157376/usr/temp/srttozp1w(删除)

_MPROSRV 32667 3890683904/usr/temp/srte5qi1u(删除)

是否有一种方法可以限制这些温度文件的大小或阻止它们生长如此大?

如果您在11.0上,请考虑升级到11.2或更高版本。

显然有一个错误(称为缺陷OE00227173,固定在11.2中),其中一些大查询会导致_mproSRV进程不断增加其.srt文件,而不是重复使用文件。

。 。

发行说明:

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

在单词指数中运行具有任何通配符的搜索时, 将在数据库服务器上创建SRT文件。如果查询返回了一大部分 排数量(大于100,000),然后排序文件中的空间不是 完全重复使用,.srt可以生长很大。

可以通过从相关的服务器中断开用户会话,然后终止服务器进程(最好使用Promin 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.

否,没有参数可以限制它们。了解您正在做什么来导致增长是关键。通常,它们是缺乏适当索引的查询的结果,因此必须由客户选择和排序记录。

我会:

  • 对客户端启用-t,以便您可以实时监视SRT文件的增长。
  • 启用客户端语句缓存,以便您可以确定在发生增长时责任哪个代码行的哪个查询。
  • 使用Xref和Debug编译,以便您可以查看表扫描的代码(XREF"整个索引"参考),并从"语句缓存信息"中查找(调试)源行
  • 从http://dbappraise.com/protop.html下载Protop 3,以便您可以实时监视查询活动
  • 将-noautoresultlist参数添加到您的客户端启动(这不是灵丹妙药,但在某些情况下可能会有所帮助)
  • 如果您碰巧在没有客户端语句缓存的情况下捕获客户端,请发送" kill -usr1",然后查找并检查突起中的4GL堆栈跟踪。(可能在客户端的启动时)

最新更新