Memcache bağlantı sayısı düşer asla, büyümeye devam ediyor

2 Cevap php

Bizim web uygulaması için üç memcache sunucularını kurdum.

İki on binlerce fazla 12 bağlantı her koruyarak tüm ederken, okur ve yazar taşıma, ince yapıyorsun göre (memcache-top).

Biz (PHPs built in memcache session handler kullanarak) ve bazı rasgele uygulama veri idari istemci oturumu veri depolamak için sorumlu üçüncü bir memcache sunucusu var. Nedense bu kutuyu bağlantı sayısı sadece zamanla artan, aşağı gider asla. Örneğin, son zamanlarda sunucu yeniden ve bir saat sonra memcache-üst kayıtları ~ 300 bağlantıları.

Kod tabanı kalıcı bağlantıları ve dinamik bağlantıları bir karışımını kullanır, ama ben bağlantıları asla ölmez durumu yeniden oluşturmak için basit bir örnek ile gelip mümkün olmuştur. Eğer memcache-yukarıdan görebileceğiniz gibi bu üçüncü memcache sunucu aslında, bizim web uygulamasının en etkin kısmını barındıran:

memcache-top v0.6  (default port: 11211, color: on, refresh: 3 seconds)

INSTANCE         USAGE  HIT %  CONN  TIME   EVICT/s READ/s  WRITE/s  
memcache1:11211  15.7%  83.5%    10  1.2ms      0.0  24.9K    34.5K  
memcache2:11211  15.8%  81.3%    10  1.0ms      0.0  19.1K    31.6K  
memcache3:11211  0.1%   0.0%    354  1.1ms      0.0      4      321  

AVERAGE:    10.5%  55.0%  124  1.1ms  0.0  14.7K  22.1K  

TOTAL:    0.6GB/  6.0GB    374  3.2ms  0.0  44.0K  66.4K

Yani benim soru: Neden bu memcache örneği için bağlantıları asla ölmez mi?

2 Cevap

PHP Kalıcı bağlantılar her apache alt işlemi için bir bağlantı tahsis edecek. ~ 354 işçi işlemler izin Apache kurulum?

Eğer PHP5 kullanıyor musunuz? Büyük olasılıkla evet. İşte PHP session_set_save_handler documentation olası bir tuzak var:

As of PHP 5.0.5 the write and close handlers are called after object destruction and therefore cannot use objects or throw exceptions. The object destructors can however use sessions.

It is possible to call session_write_close() from the destructor to solve this chicken and egg problem.

Eğer memcache oturum işleyicisi bu değişiklikten önce beri gözden olmamıştır bahis için ne kadar istiyorsun? Bir çözüm ya da en azından teşhis, ben yakın / açık / okuma / yazma ve işlevleri (itiraz) yok, session_set_save_handler ile onları kanca ve kullanarak atlamak kendi memcached oturum yazma tavsiye yerleşik bir. En azından o internals giriş yapabileceksiniz.