«Проблема кормления с ложечки», как мне недавно объяснили, возникает, когда соединения с вашим сервером приложений связаны с передачей данных вашим клиентам через медленные сетевые соединения. Для меня это имеет смысл, и теперь я понимаю важность установки высокоскоростного прокси-сервера перед моими серверами приложений.
Мой вопрос: как первый человек, узнавший эту проблему, понял ее? Какие инструменты * nix и методы устранения неполадок помогли бы мне распознать эту проблему, если бы мне не объяснили ее?
В зависимости от архитектуры вы также можете увидеть низкую загрузку ЦП в пользовательском пространстве, но более высокую нагрузку из-за процессов, находящихся в очереди ожидания, блокирующих в подпрограммах сетевого ввода-вывода пространства ядра. Если вы используете систему пула потоков, часто запросы будут отклоняться или помещаться в очередь с низким использованием ЦП, и снова счетчики ожидания ввода-вывода будут высокими.
Иногда создание дополнительных потоков / рабочих процессов временно снимает проблему, пока ваша система не достигнет другой критической массы.
Честно говоря, это очень похоже на то, с чем вы столкнетесь, когда у вас будет медленный сервер NFS.
Если вы используете Apache, типичным признаком является наличие большого количества соединений в состоянии «W» при просмотре страницы состояния сервера.
Это не инструмент * nix, но я обнаружил, что зеркалирование портов управляемого коммутатора в сочетании с Wireshark или Wildpackets полезно. Используя фильтры, можно сравнить скорость одинаковых транзакций, которые выполняются быстро или нет.