У меня есть CRM, который запрограммирован PHP, javascript и jQuery. У нас также есть XMPP и http-bind для voip.
Моя проблема: когда я загружаю CRM, первая пара http-bind занимает нормальное время (<50 мс), после этого они всегда занимают около 6000 мс.
Код для этого разбит на несколько файлов и много. Я действительно не знаю, какую часть кода добавить, поэтому я просто опущу код прямо сейчас и добавлю его части, если это необходимо.
Я довольно плохо знаком с http-binding и XMPP и, к сожалению, пока не смог найти ничего полезного, поэтому я ценю любую информацию или помощь.
Заранее спасибо!
Три факта, которые предоставляют информацию:
Firefox по умолчанию имел максимум 8 подключений на сервер. Это настраивается, но будьте осторожны, если вы измените. http://kb.mozillazine.org/Network.http.max-connections-per-server. (Примечание: я думаю, что максимум не 15 постоянных подключений, но не похоже, что вы используете последние плагины Firefox или dev?)
По умолчанию постоянные соединения (то есть соединения с сервером, которые остаются открытыми и могут быть использованы повторно — см. https://en.wikipedia.org/wiki/HTTP_persistent_connection) оставаться открытым в течение 60 секунд перед закрытием.
Браузер делает 8 одновременных звонков, а затем ждет 60 секунд до следующих.
Что должно происходить:
Если вы терпите неудачу, это шаг (2), браузер не использует одно и то же соединение. Затем он не может сделать 9-й звонок, пока открыто 8 соединений
Таким образом, либо браузер не может повторно использовать соединение, но отправляет «keep-alives» на срок до 60 секунд, а затем останавливается (сервер закрывает соединение), либо браузеру не удается закрыть соединение, и сервер настроен на 60 второй тайм-аут (который огромен!)
Решения
Я полагаю, что маловероятно, что и браузер, и сервер сломаны / неправильно настроены, и, похоже, вы используете старую версию Firebug (или какой-нибудь клон или плагин для другого браузера), начинающий там? Для тестирования измените как браузер, так и инструменты отладки:
Если Firebug: это больше не разрабатывается, поэтому вы должны начать использовать
встроенные средства разработки FireFox (но если это не помогло, попробуйте другой браузер полностью)
Если Chrome или Edge, используйте их встроенные инструменты.
Или используйте Fiddler (windows) или Charles (Mac). Но все же, не забудьте также попробовать другой браузер.
Вы можете отключить keep-alives / persistent подключений и проверить, настроен ли сервер на <60 секундных тайм-аутов. Немного сложнее, так что начните с браузера и инструментов отладки.
Других решений пока нет …