우리는 영원히(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