如何跟踪 ksh93 脚本中的内存使用情况

如何跟踪 ksh93 脚本中的内存使用情况

我们有许多永远运行的 ksh 脚本(在 while 循环内),或者至少直到将关闭事件传递给它们为止。我们有一个项目,其中这些脚本转换为 ksh93(并添加了功能),并且操作系统从 AIX 5.3 升级到 6.1。 ksh 脚本在 AIX 5.1 上运行没有问题。现在我们已经转换为 ksh93、AIX 6.1 并添加了功能,我们发现进程的内存继续增长,直到超过其限制。我们必须添加逻辑来在进程达到内存阈值时终止并重新启动进程。

我们假设(也许是错误的)某些 ksh93 函数中存在内存泄漏。

我试图确定是否有一个特定的函数没有释放内存。为了获得进程内存,我一直在使用svmon -P $$ | grep $$ | awk '{ print $3 }'.也许有更好的方法来做到这一点。

以下是脚本中各个点的 svmon 命令的输出。我添加了一个“循环结束”来显示外部“while”循环的底部。您会注意到内存使用量不断攀升,除了偶尔读取的值回落到接近起始值之外。我猜测这些低值是错误的,因为低值之后的下一个读数似乎遵循低值之前的读数。如果删除较低的值,内存使用量将继续攀升。该脚本是一个看门狗脚本,用于检查其他进程是否存在。我们其他进程的脚本也表现出相同类型的行为。

有没有更好的方法来确定内存使用情况?有人知道常见的 ksh93 函数不能正确释放内存吗? IBM 建议我们升级到 AIX 7.x,但目前不可能。

我现在应该警告你。我是一名 DBA,而不是 ksh 脚本开发人员。

28721   
Start-Of-Loop   
28435   <--- low value  
28733   
28737   
28740   
28745   
28747   
28435   <--- low value   
28755   
28759   
28762   
28767   
28770   
28774   
28777   
28780   
28783   
28787   
28791   
28806   
28809   
28813   
28817   
28822   
28825   
28828   
28831   
28833   
28835   
28835   
28838   
28839   
28843   
28843   
28843   
28435   <--- low value   
28843   
28843   
28846   
28846   
28847   
28408   <--- low value   
28853   
28853   
28853   
28408   <--- low value  
28854   
28854   
28857   
28857   
28859   
28860   
28863   
28863   
28864   
28865   
28867   
28869   
28871   
28874   
28878   
28878   
28879   
28879   
28882   
28882   
28883   
28884   
28887   
28888   
28891   
28891   
28435   <--- low value  
28894   
28897   
28898   
28901   
28436   <--- low value  
28904   
28904   
28906   
28906   
28910   
28910   
28914   
28407   <--- low value  
28917   
28435   <--- low value  
28921   
28923   
28927   
28927   
28930   
28436   <--- low value  
28935   
28935   
28935   
28938   
28942   
28942   
28435   <--- low value  
28946   
28948   
28950   
28953   
28953   
28953   
28953   
28953   
28953   
28957   
28957   
28958   
28958   
28959   
28959   
28961   
28962   
28965   
28408   <--- low value  
28966   
28966   
28967   
28968   
28970   
28971   
28974   
28974   
28975   
28975   
28976   
28976   
28408   <--- low value  
28978   
28978   
End-Of-Loop  
28436   <--- low value  
28982   
28982   
28983   
28408   <--- low value  
28984   
28984   
28985   
28440   <--- low value  
28989   
28990   
28436   <--- low value  
28991   
28991   
28991   
28991   
28991   
28994   
28995   
28995   
28995   
28995   
28997   
29001   
29004   
29008   
28435   <--- low value  
29008   
29008   
28408   <--- low value  
29011   
29011   
29011   
29015   
29015   
29019   
29019   
29019   
29019   
29020   
28435   <--- low value  
29025   
29026   
29028   
29030   
29033   
29033   
28435   <--- low value  
29035   
29039   
28436   <--- low value  
29039   
29039   
29041   
29043   
28408   <--- low value  
29047   
29050   
29050   
29052   
29052   
29055   
29055   
29057   
29057   
29058   
28408   <--- low value  
29061   
29062   
29067   
29067   
29068   
28408   <--- low value  
29069   
29070   
29075   
28408   <--- low value  
29076   
29076   
29076   
28408   <--- low value  
28408   <--- low value  
28435   <--- low value  
29080   
29083   
28408   <--- low value  
29087   
29089   
29089   
29092   
29094   
28430   <--- low value  
29097   
29100   
29101   
29103   
28408   <--- low value  
29103   
29103   
29104   
29104   
28435   <--- low value  
29107   
28408   <--- low value  
29111   
29113   
29114   
29117   
29117   
29120   
29120   
29122   
29122   
29124   
29124   
29127   
29127   
29129   
29129   
28408   <--- low value  
29134   
29135   
29135   
29135   
29135   
29139   
29139   
29139   
29139   
28440   <--- low value  
29139   
28435   <--- low value  
28408   <--- low value  
29139   
End-Of-Loop  
29141   
29145   
29145   
29147   
28435   <--- low value  
29150   
29150   
29153   
29153   
29155   
29157   
29157   
29157   
29157   
29157   
29159   
29159   
29159   
29159   
29163   
29163   
29167   
29169   
29172   
29172   
29175   
29175   
29177   
29177   
29177   
29179   
28435   <--- low value  
29181   
29186   
29186   
29189   
29189   
29191   
29193   
29196   
29196   
29198   
29198   
29199   
29200   
29202   
29202   
29205   
29205   
28435   <--- low value  
29209   
29211   
28435   <--- low value  
29216   
29217   
29220   
28435   <--- low value  
29225   
29225   
28433   <--- low value  
29227   
28433   <--- low value  
29229   
29230   
29231   
29233   
29233   
29235   
29237   
29238   
29239   
29244   
29247   
29250   
29252   
29258   
29260   
29263   
29264   
29268   
29269   
29271   
29271   
29274   
29274   
28435   <--- low value  
28408   <--- low value  
29283   
29286   
29287   
29291   
29291   
29295   
29295   
29295   
29299   
29303   
29303   
29306   
29306   
29308   
29310   
29312   
28440   <--- low value  
29312   
29312   
29317   
29318   
29322   
29322   
29323   
29323   
28408   <--- low value  
28407   <--- low value  
29327   
29327   
29329   
29329   
28435   <--- low value  
29329   
29330   
29331   
28437   <--- low value  
29333   
29336   
29336   
29336   
29336   
29336   
29336   
29336   
29336   
29336   
End-Of-Loop  
29338   
29342   
29343   
29343   
29345   
29347   
28435   <--- low value  
28435   <--- low value  
29349   
29349   
29351   
29353   
29353   
29354   
29354   
29354   
29354   
29354   
28436   <--- low value  
28408   <--- low value  
29356   
29357   
29357   
29361   
29361   
28435   <--- low value  
29361   
29363   
29363   
29366   
29367   
29373   
28408   <--- low value  
29376   
29376   
29380   
28407   <--- low value  
28435   <--- low value  
29381   
28440   <--- low value  
29387   
29387   
29390   
29394   
29394   
28436   <--- low value  
29396   
29398   
29399   
29401   
29401   
29402   
29402   
29403   
29404   
29406   
28436   <--- low value  
29411   
28408   <--- low value  
29417   
29417   
29418   
29419   
29421   
29421   
29423   
29424   
29426   
29426   
28408   <--- low value  
29431   
29435   
29435   
28435   <--- low value  
29439   
29442   
29444   
28435   <--- low value  
29447   
29449   
29449   
29451   
29451   
29455   
29455   
28435   <--- low value  
29458   
29461   
29462   
29465   
29467   
28408   <--- low value  
29470   
29473   
29475   
29478   
29479   
29483   
29483   
29485   
29485   
29488   
29488   
29489   
29489   
29489   
29489   
29491   
29492   
29493   
29493   
29495   
29497   
29501   
29503   
29504   
29504   
29506   
29508   
29509   
29511   
29515   
29515   
29519   
29519   
28436   <--- low value  
29521   
28408   <--- low value  
29522   
29523   
28435   <--- low value  
29523   
29523   
29523   
End-Of-Loop  

相关内容