Отключитесь от использования сокетов TCP и переходите на сокеты UNIX (при условии, что вы находитесь на сервере на основе Unix)
Запустите memcached с включенным сокетом:
Добавьте -s /tmp/memcached.socket
в строку запуска memcached (обратите внимание, сокеты отключают поддержку сети)
Затем в PHP подключитесь с помощью постоянных подключений и к новому сокету memcache:
$memcache_obj = new Memcache;
$memcache_obj->pconnect('unix:///tmp/memcached.socket', 0);
Еще одна рекомендация, если у вас есть несколько «типов» кэшируемых объектов, запустите экземпляр memcached для каждого «типа» и распределите между ними ваши горячие элементы.
Drupal делает это, вы можете увидеть, как их конфигурационный файл и memcached init настроены здесь .
Кроме того, мне кажется, что ваш тайм-аут memcached установлен в значение WAY на высокое. Если оно превышает 1 или 2 секунды, вы можете заблокировать скрипты. Тайм-аут должен быть достигнут, и сценарий должен по умолчанию получить объект с помощью другого метода (SQL, файл и т. Д.)
Другое дело, убедитесь, что ваш memcache не помещается в файл подкачки, если ваш кэш меньше среднего свободного RAM, попробуйте запустить memcache с опцией -k, это заставит его кэш всегда оставаться в баран и не может быть обменен.
Если у вас многоядерный сервер, также убедитесь, что memcached скомпилирован с поддержкой потоков, и включите его, используя -t <numcores>