Memcache_connect Соединение истекло - PullRequest
2 голосов
/ 14 февраля 2012

Я получаю от 10 до 20 из этих ошибок в течение 1 секунды друг от друга:

Memcache_connect Тайм-аут соединения

Это происходит несколько раз в день на сервере с около 2500 ежедневно активных пользователей, 1 ГБ ОЗУ. Я не думаю, что сервер обменивается. Большую часть времени я использую менее 75% памяти и менее 25% загрузки ЦП. Средние нагрузки обычно меньше 9. Я следовал инструкциям по отладке здесь: http://code.google.com/p/memcached/wiki/Timeouts

Вот моя статистика memcache:

stats
STAT pid 15365
STAT uptime 173776
STAT time 1329157234
STAT version 1.2.8
STAT pointer_size 32
STAT rusage_user 1171.316354
STAT rusage_system 7046.435826
STAT curr_items 28494
STAT total_items 4039745
STAT bytes 3371127
STAT curr_connections 36
STAT total_connections 102206685
STAT connection_structures 328
STAT cmd_flush 0
STAT cmd_get 73532547
STAT cmd_set 4039745
STAT get_hits 40779162
STAT get_misses 32753385
STAT evictions 0
STAT bytes_read     2153565193
STAT bytes_written 38768040520
STAT limit_maxbytes 67108864
STAT threads 2
STAT accepting_conns 1
STAT listen_disabled_num 0

Моя гипотеза заключается в том, что у меня заканчиваются корзины TIME_WAIT:

netstat -n | grep TIME_WAIT | wc -l

51892

Но я не знаю, слишком ли это высоко или нет. Я на Solaris (на серверах Joyent), и tcp_time_wait_interval установлен на 60000. В некоторых других показаниях предлагалось уменьшить этот параметр до 30000 или 15000. Но это не кажется мне масштабируемым решением.

Откуда я знаю, что у него кончаются ведра? Должен ли я увеличить количество ведер TIME_WAIT? если да, то как?

...