Sampai saat ini pengaturan kami terdiri dari 4 sesi berbagi server web ke satu server yang menjalankan memcache. Kami di-host di cloud Amazon dan mengalami crash pada saat beban puncak pada 2 hari berturut-turut. Masalahnya adalah layanan memcache macet (beban ke situs kami terus meningkat).
Jadi, kami mengambil langkah-langkah berikut:
1) Menambahkan 2 server lagi untuk menyimpan sesi
2) Tetapkan variabel berikut dalam file php ini di semua server web
session.save_handler = memcache
session.save_path = tcp://ip1.port, tcp://ip2.port, tcp://ip3:port
memcache.hash_strategy = consistent
memcache.allow_failover = 1
Semuanya berjalan beres sekarang. Untuk memastikan ketersediaan, kami mencoba pengujian dengan secara acak membunuh salah satu server sesi kami, dan situs tetap berjalan (beberapa pengguna keluar, yang dapat diterima secara bisnis saat ini).
Tetapi ada satu masalah besar. Saya berharap beban pada server memcache akan lebih atau kurang terdistribusi secara merata. Tapi ternyata tidak!
Jika saya melihat "Max Network Out (Bytes)" di CloudWatch, maka saya dapat melihat bahwa bebannya kira-kira dalam perbandingan 10: 5: 1. Dengan kata lain, bandwidth jaringan Masuk dan Keluar, server pertama 10 kali lebih banyak dari yang ketiga. Dan server kedua adalah 5 kali lebih banyak dari yang ketiga.
Ada ide?
Jawaban:
Mengubah urutan IP memcache untuk
session.save_path
parameter mungkin mengubah rasio distribusi sesi dari server memcache. Misalnya pada server web 1:di server web ke-2:
di server web ke-3:
di server web ke-4:
sumber