私たちは永遠に(whileループ内で)、または少なくとも終了イベントが送出されるまで実行されるいくつかのkshスクリプトを持っています。私たちはこれらのスクリプトをksh93に変換し、機能を追加し、OSを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にアップグレードすることをお勧めしますが、これは現在不可能です。
今警告する必要があります。私はkshスクリプト開発者ではなくDBAです。
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