How would I recognize the "spoon-feeding problem" on a dynamic webapp server?
"Проблема кормления с ложечки", как мне недавно объяснили, возникает, когда соединения с вашим сервером приложений связаны с подачей данных через медленные сетевые соединения с вашими клиентами. Это имеет смысл для меня, и теперь я понимаю важность размещения высококонкурентного прокси перед моими серверами приложений.
Мой вопрос: как первый человек, узнавший эту проблему, понял это? Какие *nix инструменты и методы устранения неполадок помогут мне распознать эту проблему, если бы мне ее не объяснили?
3 ответа
В зависимости от архитектуры вы также можете наблюдать низкую загрузку ЦП в пользовательском пространстве ЦП, но более высокую нагрузку из-за процессов, находящихся в очереди на блокировку в подпрограммах ввода-вывода сети пространства ядра. Если вы используете систему пула потоков, много раз вы будете получать запросы, которые будут отклонены или поставлены в очередь с низкой загрузкой ЦП, опять же, счетчики ожидания ввода-вывода будут высокими.
Иногда создание дополнительных потоков / рабочих временно устраняет проблему, пока ваша система не достигнет другой критической массы.
Честно говоря, это очень похоже на то, с чем вы столкнетесь, когда у вас медленный NFS-сервер.
Если вы используете Apache, типичным симптомом является множество соединений в состоянии "W" при просмотре страницы состояния сервера.
Это не инструмент *nix, но я нашел полезное зеркалирование портов управляемого коммутатора в сочетании с Wireshark или Wildpackets. Используя фильтры, можно сравнить скорость похожих транзакций, которые выполняются быстро или нет.