30 Ogo 2016

Redis server timeout error apabila connection menjangkau 1.02K

Assalamualaikum

Sepanjang ditugaskan untuk menjada server sistem dokumen klinikal untuk klinik buah pinggang, ada banyak masalah yang dihadapi oleh server apabila sistem 'agak' berat digunakan. Namun pada relatifnya, penggunaannya adalah sangat rendah kerana jumlah pengguna atau doktor yang merawat pesakit pada waktu klinik tidak mencecah sehingga 30 orang.

Akan tetapi, aplikasi sistem klinikal renal telah beberapa kali memaparkan error dengan mesej-mesej dalam log yang agak kabur. Connection time out berlaku apabila redis membuat arahan "set" untuk menyimpan data dalam memori.

Redis::TimeoutError (Connection timed out):
  lib/husm/api.rb:46:in `save_key'
  lib/husm/api.rb:25:in `request'

Jumlah keseluruhan ram dalam server adalah 8GB dan pada ketika berlaku error ini, jumlah penggunaan ram oleh redis hanyalah 500MB.

Sumber yang sangat tinggi digunakan oleh redis adalah CPU pada ketika error ini berlaku.


Setelah membuat sedikit carian menerusi google, terjumpa satu alatan untuk membuat pemantauan terhadap operasi redis iaitu redis-stat. Redis stat akan memantau operasi redis setiap saat. Dengan melarikan arahan redis-stat --server, satu aplikasi laman web akan dijalankan dan boleh diakses menggunakan pelayar.

redis-stat --server



Setelah beberapa ketika, apabila pengunaan sistem agak tinggi iaitu pada hari klinik pakar nephro, sistem akan memaparkan error dan tidak dapat digunakan buat beberapa ketika. Didapati, jumlah 'cl' pada redis-stat mencapai 1.02k dan tidak pernah lebih daripada itu.

Oleh itu, aku jatuh syak pada had open-files dalam sistem linux yang biasanya disetkan kepada 1024 secara default. Sekali lagi carian dibuat dan mendapati cara untuk meningkatkan had open-files pada aplikasi redis adalah dengan memasukkannya dalam script service.

1. sudo nano /etc/default/redis-server

2. tambah / uncomment
   ULIMIT=65536


3. Restart redis-server
   sudo service redis-server restart



Apabila aplikasi berat, jumlah sambungan kepada redis menjadi tinggi namun tiada lagi mesej error Redis::TimeoutError dan jumlah cl pada redis stat menjadi lebih tinggi daripada 1.02k.

Setakat ini, sistem masih lagi bertahan namun masih lagi terdapat ralat pada nginx itu sendiri (upstream timeout error)


Satu lagi misteri untuk dirungkaikan.. 










Tiada ulasan:

Catat Ulasan

Demo sero guano?