Temos vários scripts ksh que são executados para sempre (dentro de um loop while), ou pelo menos até que um evento de desligamento seja entregue a eles. Nós tínhamos um projeto onde esses scripts eram convertidos para o ksh93 (e a funcionalidade foi adicionada) e o O / S foi atualizado do AIX 5.3 para o 6.1. Os scripts ksh foram executados sem problemas no AIX 5.1. Agora que convertemos para o ksh93, AIX 6.1 e funcionalidade adicional, estamos descobrindo que a memória dos processos continua a crescer até que tenha excedido seu limite. Nós tivemos que adicionar lógica para matar e reiniciar os processos quando eles atingem um limite de memória.
Estamos assumindo, talvez de forma incorreta, que há um vazamento de memória em alguma função ksh93.
Estou tentando determinar se há uma função específica que não está liberando memória. Para obter memória de processo, tenho usado svmon -P $$ | grep $$ | awk '{ print $3 }'
. Talvez exista uma maneira melhor de fazer isso.
Aqui está a saída do comando svmon em vários pontos do script. Eu adicionei um "End-Of-Loop" para mostrar a parte inferior do loop "while" externo. Você notará que o uso da memória continua subindo, exceto pela leitura ocasional, onde está de volta para perto do valor inicial. Eu estou supondo que esses valores baixos estão errados porque a próxima leitura após o valor baixo parece seguir a leitura logo antes do valor baixo. Se você remover os valores baixos, o uso da memória continuará a subir. Esse script é um script de monitoramento que verifica a existência de nossos outros processos. Os scripts dos nossos outros processos exibem o mesmo tipo de comportamento.
Existe uma maneira melhor de determinar o uso de memória? Alguém está ciente das funções comuns do ksh93 que não liberam a memória corretamente? A IBM sugeriu que atualizássemos para o AIX 7.x mas isso não é uma possibilidade no momento.
Eu deveria avisá-lo agora. Eu sou um DBA, não um desenvolvedor de script 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