Частый SystemExit в Ruby при создании HTTP-вызовов

20
задан CinCout 21 December 2016 в 04:13
поделиться

4 ответа

Используя fcgi с Ruby, как известно, очень ошибочен.

Практически все переместились в Полукровка поэтому, и я рекомендую сделать то же.

9
ответ дан 30 November 2019 в 01:03
поделиться

Это было некоторое время, так как я использовал FCGI, но я думаю, что процесс FCGI мог бросить SystemExit, если бы поток занимал слишком много времени. Это могло быть веб-сервисом, не отвечающим или даже медленным запросом DNS. Некоторые результаты Google показывают подобную ошибку с Python, и FCGI, настолько движущийся полукровке, был бы хорошей идеей. Это сообщение является моей ссылкой, я раньше устанавливал полукровку, и я все еще вернулся к нему.

8
ответ дан 30 November 2019 в 01:03
поделиться

Я также смотрел бы на Пассажир . Намного легче начаться, чем традиционное решение Apache/nginx + Полукровка.

1
ответ дан 30 November 2019 в 01:03
поделиться

Я раньше получал их все время на Apache1/fastcgi. Я думаю, что это вызывается fastcgi, зависающим, прежде чем Ruby будет сделан.

Переключение на полукровку является хорошим первым шагом, но существует больше, чтобы сделать. Это - плохая идея отобрать от веб-сервисов на живых страницах, особенно от направляющих. Направляющие не ориентированы на многопотоковое исполнение. Количество параллельных соединений, которые можно поддерживать, равняется числу полукровок (или Пассажирские процессы) в кластере.

, Если у Вас есть одна полукровка и кто-то получает доступ к странице, которая называет веб-сервис, который занимает 10 секунд для таймаута, каждый запрос к веб-сайту будет тайм-аут в течение того времени. Большинство подсистем балансировки нагрузки просто цикл через Ваших полукровок вслепую, поэтому если у Вас есть две полукровки, любой запрос, будет тайм-аут.

Что-либо, что может быть непредсказуемо медленными потребностями произойти в очереди заданий. Первый хит к/slow/action добавляет задание к очереди, и/slow/action продолжает обновляться через обновления страницы или запросы через ajax, пока задание не закончено, и затем Вы получаете свои результаты очереди заданий. Существует несколько очередей заданий для направляющих в наше время, но самое старое и вероятно наиболее широко использовало, каждый BackgroundRB.

Другая альтернатива, в зависимости от природы Вашего приложения, должна отобрать сервис каждый минуты N через крон, кэшировать данные локально, и читать Вашу живую страницу из кэша.

5
ответ дан 30 November 2019 в 01:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: