У нас есть приложение на основе Java-Netty. Когда происходит всплеск трафика, в приложении наблюдаются скачки загрузки ЦП до 90%, а также увеличение количества ожиданий закрытия. Объем трафика не так высок.
Ниже приведен мой анализ.
Конкретные каналы, связанные с рабочими потоками, имеют всплеск трафика.
Из-за внезапного всплеска рабочий поток не может обработать запрос быстрее, но начал задыхаться из-за очереди, забитой запросами.
Другие каналы netty, связанные с тем же тайм-аутом запросов рабочего потока, и, следовательно, отправляют FIN. сигнал о закрытии.
В рабочем потоке, поскольку он уже задушен, невозможно закрыть сокет, из-за чего в системе увеличилось время ожидания закрытия.
Это вызвало нагрузку на систему, что привело к увеличению загрузки ЦП.
Может кто-нибудь уточнить, есть ли какие-либо отклонения.
И вот мои дальнейшие вопросы.
Почему рабочий поток не может закрыть канал сокета, когда клиент отправляет FIN?
Почему ожидания закрытия приводят к увеличению загрузки ЦП.
У нас есть приложение на основе Java-Netty. Когда происходит всплеск трафика, в приложении наблюдаются скачки загрузки ЦП до 90%, а также увеличение количества ожиданий закрытия. Объем трафика не так высок. Ниже приведен мой анализ. [list] [*]Конкретные каналы, связанные с рабочими потоками, имеют всплеск трафика. [*]Из-за внезапного всплеска рабочий поток не может обработать запрос быстрее, но начал задыхаться из-за очереди, забитой запросами. [*]Другие каналы netty, связанные с тем же тайм-аутом запросов рабочего потока, и, следовательно, отправляют FIN. сигнал о закрытии. [*]В рабочем потоке, поскольку он уже задушен, невозможно закрыть сокет, из-за чего в системе увеличилось время ожидания закрытия. [*]Это вызвало нагрузку на систему, что привело к увеличению загрузки ЦП. [/list] Может кто-нибудь уточнить, есть ли какие-либо отклонения. И вот мои дальнейшие вопросы. [list] [*]Почему рабочий поток не может закрыть канал сокета, когда клиент отправляет FIN? [*]Почему ожидания закрытия приводят к увеличению загрузки ЦП. [/list]