Сайт Drupal - ошибки подключения к Memcache - PullRequest
2 голосов
/ 18 мая 2009

Мы пытаемся настроить наш сайт на друпале. Мы используем Siege для измерения производительности (в качестве посетителя drupal).

ENV: Nginx + FastCGI + Memcache

Siege работает нормально в течение нескольких секунд, а затем мы сталкиваемся с ошибками соединения: Пример:

HTTP/1.1 200  29.18 secs:    5877 bytes ==> /
HTTP/1.1 200  29.39 secs:    5877 bytes ==> /
warning: socket: -1656235120 select timed out: Connection timed out
warning: socket: -1673020528 select timed out: Connection timed out

Используя ту же конфигурацию теста Siege, Nginx + FastCGI + Drupal Cache работает нормально. Пример:

HTTP/1.1 200   1.41 secs:    5868 bytes ==> /
HTTP/1.1 200   1.40 secs:    5868 bytes ==> /

Как видите, время отклика намного выше с MemCache, в дополнение к ошибкам соединения.

Есть идеи, что здесь может быть не так ... и почему Drupal выдает ошибки с memcache под нагрузкой?

Memcache запускается в отдельном экземпляре. Выделено 2 ГБ памяти для MemCache.

1 Ответ

3 голосов
/ 19 мая 2009

I догадываюсь , что у вас закончились Memcached соединения. Пожалуйста, запускайте проверку установки memcached простым скриптом каждую секунду. Затем начните осаду. Я думаю, ваш memcached перестает отвечать через некоторое время.

Проверка скрипта memcache php:

<?php
 $memcache = new Memcache;
 $memcache->connect('localhost', 11211) or die ('Unable to connect');
 $version = $memcache->getVersion();
 echo 'Server version: '.$version;
?>

Что я думаю происходит, так это то, что вы не отключили постоянные соединения в memcache, и они зависают в потоках php. Memcached может обслуживать ~ 1023 из них одновременно, и этого может быть недостаточно при осаде.

Вы также можете попробовать ab , инструмент тестирования Apache с близким взглядом на переключатель -c. Поиграйте с ним и посмотрите, как результаты меняются при разных значениях.

Наконец, вы должны запустить tcpdump на вашем порту memcached (обычно 11211) на php-машине, чтобы выяснить, что происходит с соединениями. Друпал их запускает? Другой хост отвечает RST или время ожидания истекло?

В документации по memcached php была ошибка, из-за которой соединения по умолчанию были непостоянными. Они являются постоянными по умолчанию (ну, они были в то время, когда у меня была проблема с ним).

Не стесняйтесь комментировать этот ответ, я прочитаю комментарии и помогу в случае необходимости.

...