Результаты php-handlersocket усекаются, когда значения слишком велики

Наша установка выглядит следующим образом:

  • Основной сервер БД, экземпляр Amazon EC2 m2.xlarge (оперативная память 17 ГБ, ЦП 2x3.25ecu) под управлением Percona 5.5.x
  • Серверы приложений, экземпляр Amazon EC2 m1.large (7,5 ГБ оперативной памяти, 2x2ecu ЦП) под управлением PHP 5.4
  • php-handlersocket Библиотека PECL находится здесь http://code.google.com/p/php-handlersocket/

По большей части это работает, но как только я загружаю сервер приложений ровным относительным трафиком, результаты начинают давать сбои в запросах, где записи результатов имеют поля со средними и большими значениями. В нашем случае двумя главными виновниками являются строки XML размером ~5 КБ и файлы мультимедиа, хранящиеся в виде двоичных объектов размером 5-500 КБ. Симптом: если я запрашиваю 10 полей, а XML находится в 8-м поле, я получу 7 результатов с данными, а 8-е будет пустым, 9 и 10 не будут включены вообще.

Существует известная проблема для библиотеки php-handlersocket, связанная с этим типом проблемы, однако есть также предложенное исправление, которое я реализовал, и я подумал, что оно помогло, но, похоже, не совсем. Подробности проблемы и ее решение можно найти здесь http://code.google.com/p/php-handlersocket/issues/detail?id=28

Мои настройки HandlerSocket немного отличаются от настроек по умолчанию. Должны ли они быть другими?

loose_handlersocket_port = 9998
loose_handlersocket_port_wr = 9999
loose_handlersocket_threads = 4
loose_handlersocket_threads_wr = 1
open_files_limit = 65535

Я сократил значение по умолчанию read потоки до 4, так как они рекомендуют CORES * 2, по умолчанию - 16. Я думал, что более медленные ответы будут лучше, чем вообще никаких, но, похоже, это не имеет значения.

php-handlersocket Проект выглядит мёртвым, что само по себе немного удивительно, последние обновления исходного кода были более года назад, но, похоже, нет другой доступной библиотеки PHP, поэтому я застрял.

Мне интересно, если у кого-то были подобные проблемы, есть ли другие доступные библиотеки, или я должен был бы исследовать пропуск библиотек и создавать свой собственный интерфейс с чем-то вроде CURL.

1 ответ

Решение

В итоге, как и в случае со многими проблемами, я стал настороженно относиться к проекту с открытым исходным кодом с ограниченным вниманием и решил написать свой собственный php sockets решение, которое работает отлично.

Другие вопросы по тегам