Мне нужно отправить оповещения в веб-систему мониторинга, написанную в RoR. Решение грубой силы - это часто опробовать легкий контроллер с javascript. Естественно, недостатком является то, что для того, чтобы получить время отклика на оповещения, мне пришлось бы опросить очень часто (каждые 5 секунд).Быстрые ответы AJAX от приложения Rails
Одна из моих идей заключалась в том, чтобы связанный поток AJAX-опроса спал на стороне сервера, пока на сервер не поступило предупреждение. Затем сервер пробудит спальный поток и получит ответ на веб-клиент, который будет показан сразу. Это позволило бы мне сократить интервал опроса до одного раза в 30 секунд или каждую минуту, улучшив время, необходимое для предупреждения пользователя.
Одна вещь, на которую я не рассчитывал, заключалась в том, что mongrel/rails не запускает нить на веб-запрос, как я и ожидал. Это означает, что другие входящие веб-запросы блокируются до тех пор, пока не истечет время ожидания первого потока.
Я пробовал возиться с вызовом «config.threadsafe!» в моей конфигурации, но это, похоже, не изменяет поведение на поток для каждой модели запроса. Кроме того, похоже, что работает с config.threadsafe! является рискованным предложением, которое может потребовать гораздо большего тестирования и переделки на мое существующее приложение.
Любые мысли о подходе, который я использовал, или о лучших способах получения времени ответа, которое я ищу, без необходимости потопить сервер с запросами?
Речь идет не о производительности контроллера. Моя проблема действительно преднамеренно задерживает некоторые ответы сервера, в то время как запрос AJAX ожидает предупреждения, позволяя другим продолжать. – Chris
Я просто оглядывался назад по старым вопросам и думал, что я отдам должное этому. Джаггернаут - хорошее решение COMET на орбите. Я решил проблему с однопоточным подключением к mungrel, переключившись на Phusion Passenger. С каким легким сервисом можно заниматься! – Chris