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(已删除)
有没有办法限制这些临时文件的大小或阻止它们变得如此之大?
答案 0 :(得分:1)
不,没有参数可以限制它们。了解您正在做的事情以促进增长是关键。通常它们是缺少适当索引的查询的结果,因此必须由客户端选择和排序记录。
我会:
答案 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.