Регистрация...

Eserv Forum / E4 / Proxy / Скорость работы EProxy в разных условиях

wikipost // (v1)
Продукты и услуги Скачать Документация Купить Поддержка Форумы Партнёрам Статьи О компании
Здравствуйте!
Имеется следующий вопрос.
Был у нас EProxy 3 на Сервере P4 с оперативкой 1 Гб Операционка Windows Server 2003 Web Server x32 Перестал справляться с нагрузкой.
Купили новый Xeon С Windows Web Server 2008 x64. Там тоже поставили EProxy 3.
Оба сервака стоят в отдельной сети (DMZ).
Проблема в следующем. На новом сервере (Xeon) Прокся безбожно тормозит. Страничка появляется не раньше чем через 5 секунд после нажатия на ссылку. Потом не спеша картинки подгружаются. Такая ситуация имеет место, если идешь через прокси из локальной сети, отделенной от DMZ маршрутизатором. Если подключить клиента в DMZ, прокси срабатывает быстро и четко.
На старом сервере (P4+Win2003) таких проблем не наблюдается.

Когда возникла проблема, все эксперименты провел и на E4. Результат тот-же.

Может кто уже сталкивался?
 
Комментарии к этой версии (25.06.2010 10:28) [~psSnowman] 322f8ace
АвторДатаТекстtags
ac25.06.2010 11:02
Вы же уже в самом вопросе ответили — дело в маршрутизации (отдельная сеть или та же), поэтому менять E3/E4 тут бесполезно. Если при прочих равных есть разница в скорости работы на разных машинах, то надо искать, в чем разница их подключения. Сравните tracert до этих двух серверов с клиента.

Еще посмотрите — может быть DNS на этих двух серверах настроен на разные IP.
wikipost
psSnowman25.06.2010 13:57
ред: 25.06.2010 13:59
Конфиги EServ на обоих серверах не просто одинаковые. Они идентичны. Сделаны по Ctrl+C Ctrl+V. Настройки DNS Windows тоже идентичны на обеих машинах. Маршруты тоже одинаковые. Таблицы маршрутизации тоже одинаковые. По сути дела отличаются только IP адреса серверов.

Штука в том, что ничего кроме EServ не тормозит. RDP моментально соединяется, да и остальные тоже нормально.
Провел пару экспериментов. Назовем новый сервер LocalNEW (XEON), а старый LocalOLD (P4)
  1. Написал в Firefox в качестве прокси 127.0.0.1. Запустил TCP-Logger, направив его на LocalNEW. Открыл в браузере www.ya.ru. Открывался он вместе с картинкой и доп файлами 50 секунд! Смотрим в логи TCP-Logger. Между запросом клиента и ответом прокси (между GET и ответом) проходит 9-10 секунд. Причем на каждый файл. Это результат №1.
  2. Исправил настройки Firefox обратно на LocalNEW. Заменил на LocalNEW EProxy на TCP-logger. TCP-logger "направил" на LocalOLD сервер.Ya.ru открылся за доли секунды.
  3. Из этого я делаю вывод, что связь с LocalNEW нормальная. Маршрутизация не причем. Остается DNS. Но а) DNS у обоих серверов настроен одинаково. Только на DNS провайдера. Локальные DNS не доступны обоим. б) Если открыть ya.ru на самом LocalNEW (через IE) тормозов нет. Следовательно. Путь из сети до сервера чистый, от сервера в инет тоже. Остается вывод, задержку дает EProxy.
wikipost
ac25.06.2010 14:18
Но вы можете провести тот же тест, но с убиранием маршрутизатора, о котором писали в первом посте. И получите вывод, что задержку даёт он

На каком этапе задержка — можно попробовать поймать, включив "vDebugRules ON" (раскомментировать в конфиге и перезапустить). Тогда он в Eproxy.log (E3) или acWEB.log (E4) будет писать этапы выполнения правил — соединение, обработка, ответ — с меткой времени для каждого этапа. Вот сравнением таких логов на двух серверах наверное найдём причину.
wikipost
psSnowman25.06.2010 14:28
OK. Сейчас сделаем.
wikipost
psSnowman25.06.2010 14:31
ac пишет: Но вы можете провести тот же тест, но с убиранием маршрутизатора, о котором писали в первом посте. И получите вывод, что задержку даёт он

И в первом и во втором опыте трафик идет через маршрутизатор.
Меняется только прокси (E3 на TCP-Logger). В первом тормозит а во втором нет. Возможно винда мешает EProxy что-то проверить. Поэтому он так долго думает.
wikipost
psSnowman25.06.2010 14:52
Лог нового (тормозящего).
В принципе видны места задержек. С логом второго сложнее. Им народ пользуется.

<30>
Log started: Fri, 25 Jun 2010 15:44:25 +0400 (Eproxy/3.0, build 8191, 24.03.2008) Eserv key: RU, Санкт-Петербург, *** Rule;8551343;0;LocalLog Rule;8551343;0;conf\LocalLog.rules.txt Rule;8551343;0;OnStartupPlugins Rule;8551343;0;conf\OnStartupPlugins.rules.txt Rule;8551343;0;..\CommonPlugins\plugins\service\index.f Rule;8551343;0;..\CommonPlugins\plugins\service\activate.f Rule;8551343;0;..\CommonPlugins\plugins\mlogc\index.f Rule;8551343;0;..\CommonPlugins\plugins\mlogc\activate.f Rule;8551343;0;..\CommonPlugins\plugins\cache_log_str\index.f Rule;8551343;0;..\CommonPlugins\plugins\cache_log_str\activate.f Rule;8551359;0;..\CommonPlugins\plugins\auth_lib\index.f Rule;8551359;0;..\CommonPlugins\plugins\auth_lib\activate.f Rule;8551359;0;conf\http-proxy\plugins\acl\index.f Rule;8551359;0;conf\http-proxy\plugins\acl\activate.f Rule;8551359;0;conf\http-proxy\plugins\hierarchy\index.f Rule;8551359;0;conf\http-proxy\plugins\hierarchy\activate.f Rule;8551359;0;conf\http-proxy\plugins\cache\index.f Rule;8551359;0;conf\http-proxy\plugins\cache\activate.f Rule;8551359;0;conf\http-proxy\plugins\put_log\index.f Rule;8551359;0;conf\http-proxy\plugins\put_log\activate.f Rule;8551359;0;conf\plugins\udpmap\index.f Rule;8551359;0;conf\plugins\udpmap\activate.f Rule;8551359;0;conf\plugins\tcpmap\index.f Rule;8551359;0;conf\plugins\tcpmap\activate.f Rule;8551359;0;conf\plugins\pop3proxy\index.f Rule;8551359;0;conf\plugins\pop3proxy\activate.f Rule;8551359;0;..\CommonPlugins\plugins\dial\index.f Rule;8551359;0;..\CommonPlugins\plugins\dial\activate.f Rule;8551359;0;..\CommonPlugins\plugins\snmp\index.f Rule;8551359;0;..\CommonPlugins\plugins\snmp\activate.f Rule;8551375;0;..\CommonPlugins\plugins\mstat\index.f Rule;8551375;0;..\CommonPlugins\plugins\mstat\activate.f Rule;8551375;0;ListenPorts Rule;8551375;0;conf\ListenPorts.rules.txt Rule;8551375;0;RUN-SERVICE Rule;8567421;1;OnConnect Rule;8567421;1;conf\OnConnect.rules.txt Rule;8567421;12;OnThreadConnect Rule;8567421;12;conf\OnThreadConnect.rules.txt Rule;8567421;12;IpMacAuth Rule;8567421;12;..\CommonPlugins\IpMacAuth.rules.txt Rule;8570562;12;http-proxy\OnThreadConnect Rule;8570562;12;conf\http-proxy\OnThreadConnect.rules.txt Rule;8570562;12;http-proxy\OnRequest Rule;8570562;12;conf\http-proxy\OnRequest.rules.txt Rule;8570562;12;http-proxy\ip-list Rule;8570562;12;myconf\http-proxy\ip-list.rules.txt Rule;8570562;12;IpMacAuth Rule;8570562;12;..\CommonPlugins\IpMacAuth.rules.txt Rule;8573703;12;plugins\auth_lib\OnRequest Rule;8573703;12;..\CommonPlugins\plugins\auth_lib\OnRequest.rules.txt Rule;8573703;12;plugins\auth_lib\IpAuth Rule;8573703;12;..\CommonPlugins\plugins\auth_lib\IpAuth.rules.txt Rule;8573703;12;AuthDomains Rule;8573703;12;..\CommonPlugins\AuthDomains.rules.txt Rule;8573703;12;InitDomain Rule;8573703;12;..\CommonPlugins\InitDomain.rules.txt List;8573703;12;192.168.1.2;..\CONF\lists\DomainIP.txt List;8573703;12;stalt.ru;..\CONF\lists\LocalDomains.txt List;8573703;12;EServ;..\CONF\lists\AuthSources.txt Rule;8573703;12;plugins\auth\auth_md5\DoLogin Rule;8573703;12;..\CommonPlugins\plugins\auth\auth_md5\DoLogin.rules.txt List;8573703;12;postmaster;..\CONF\lists\UserList.txt Rule;8573703;12;http-proxy\OnRequestPlugins Rule;8573703;12;conf\http-proxy\OnRequestPlugins.rules.txt Rule;8573703;12;OnStartupPlugins Rule;8573703;12;conf\OnStartupPlugins.rules.txt Rule;8573703;12;conf\http-proxy\plugins\acl\OnRequest.rules.txt Rule;8573703;12;IsGroupMember Rule;8573703;12;..\CommonPlugins\IsGroupMember.rules.txt List;8573703;12;stalt.ru;..\CONF\lists\LocalDomains.txt List;8573703;12;EServ;..\CONF\lists\AuthSources.txt Rule;8573703;12;plugins\auth\auth_md5\IsMember Rule;8573703;12;..\CommonPlugins\plugins\auth\auth_md5\IsMember.rules.txt Rule;8573703;12;conf\http-proxy\plugins\hierarchy\OnRequest.rules.txt Rule;8573703;12;conf\http-proxy\plugins\cache\OnRequest.rules.txt Rule;8573703;12;TCP_MISS Rule;8573703;12;DIRECT Rule;8573703;12;DIRECT-CONNECTION Rule;8573843;1;OnConnect Rule;8573843;1;conf\OnConnect.rules.txt Rule;8573843;13;OnThreadConnect Rule;8573843;13;conf\OnThreadConnect.rules.txt Rule;8573843;13;IpMacAuth Rule;8573843;13;..\CommonPlugins\IpMacAuth.rules.txt Rule;8573890;12;http-proxy\OnRequestComplete Rule;8573890;12;conf\http-proxy\OnRequestComplete.rules.txt Rule;8573890;12;OnDisconnect Rule;8573890;12;conf\OnDisconnect.rules.txt Rule;8574140;1;OnConnect Rule;8574140;1;conf\OnConnect.rules.txt Rule;8574140;14;OnThreadConnect Rule;8574140;14;conf\OnThreadConnect.rules.txt Rule;8574140;14;IpMacAuth Rule;8574140;14;..\CommonPlugins\IpMacAuth.rules.txt Rule;8574140;1;OnConnect Rule;8574140;1;conf\OnConnect.rules.txt Rule;8574140;15;OnThreadConnect Rule;8574140;15;conf\OnThreadConnect.rules.txt Rule;8574140;15;IpMacAuth Rule;8574140;15;..\CommonPlugins\IpMacAuth.rules.txt Rule;8576984;13;http-proxy\OnThreadConnect Rule;8576984;13;conf\http-proxy\OnThreadConnect.rules.txt Rule;8576984;13;http-proxy\OnRequest Rule;8576984;13;conf\http-proxy\OnRequest.rules.txt Rule;8576984;13;http-proxy\ip-list Rule;8576984;13;myconf\http-proxy\ip-list.rules.txt Rule;8576984;13;IpMacAuth Rule;8576984;13;..\CommonPlugins\IpMacAuth.rules.txt Rule;8577281;14;http-proxy\OnThreadConnect Rule;8577281;15;http-proxy\OnThreadConnect Rule;8577281;14;conf\http-proxy\OnThreadConnect.rules.txt Rule;8577281;15;conf\http-proxy\OnThreadConnect.rules.txt Rule;8577281;14;http-proxy\OnRequest Rule;8577281;15;http-proxy\OnRequest Rule;8577281;14;conf\http-proxy\OnRequest.rules.txt Rule;8577281;15;conf\http-proxy\OnRequest.rules.txt Rule;8577281;15;http-proxy\ip-list Rule;8577281;14;http-proxy\ip-list Rule;8577281;15;myconf\http-proxy\ip-list.rules.txt Rule;8577281;14;myconf\http-proxy\ip-list.rules.txt Rule;8577281;15;IpMacAuth Rule;8577281;14;IpMacAuth Rule;8577281;15;..\CommonPlugins\IpMacAuth.rules.txt Rule;8577281;14;..\CommonPlugins\IpMacAuth.rules.txt Rule;8580125;13;plugins\auth_lib\OnRequest Rule;8580125;13;..\CommonPlugins\plugins\auth_lib\OnRequest.rules.txt Rule;8580125;13;plugins\auth_lib\IpAuth Rule;8580125;13;..\CommonPlugins\plugins\auth_lib\IpAuth.rules.txt Rule;8580125;13;AuthDomains Rule;8580125;13;..\CommonPlugins\AuthDomains.rules.txt Rule;8580125;13;InitDomain Rule;8580125;13;..\CommonPlugins\InitDomain.rules.txt List;8580125;13;192.168.1.2;..\CONF\lists\DomainIP.txt List;8580125;13;stalt.ru;..\CONF\lists\LocalDomains.txt List;8580125;13;EServ;..\CONF\lists\AuthSources.txt Rule;8580125;13;plugins\auth\auth_md5\DoLogin Rule;8580125;13;..\CommonPlugins\plugins\auth\auth_md5\DoLogin.rules.txt List;8580125;13;postmaster;..\CONF\lists\UserList.txt Rule;8580125;13;http-proxy\OnRequestPlugins Rule;8580125;13;conf\http-proxy\OnRequestPlugins.rules.txt Rule;8580125;13;OnStartupPlugins Rule;8580125;13;conf\OnStartupPlugins.rules.txt Rule;8580125;13;conf\http-proxy\plugins\acl\OnRequest.rules.txt Rule;8580125;13;conf\http-proxy\plugins\hierarchy\OnRequest.rules.txt Rule;8580125;13;conf\http-proxy\plugins\cache\OnRequest.rules.txt Rule;8580125;13;TCP_MISS Rule;8580125;13;DIRECT Rule;8580125;13;DIRECT-CONNECTION Rule;8580265;13;http-proxy\OnRequestComplete Rule;8580265;13;conf\http-proxy\OnRequestComplete.rules.txt Rule;8580265;13;OnDisconnect Rule;8580265;13;conf\OnDisconnect.rules.txt Rule;8580421;15;plugins\auth_lib\OnRequest Rule;8580421;15;..\CommonPlugins\plugins\auth_lib\OnRequest.rules.txt Rule;8580421;14;plugins\auth_lib\OnRequest Rule;8580421;15;plugins\auth_lib\IpAuth Rule;8580421;14;..\CommonPlugins\plugins\auth_lib\OnRequest.rules.txt Rule;8580421;15;..\CommonPlugins\plugins\auth_lib\IpAuth.rules.txt Rule;8580421;14;plugins\auth_lib\IpAuth Rule;8580421;15;AuthDomains Rule;8580421;14;..\CommonPlugins\plugins\auth_lib\IpAuth.rules.txt Rule;8580421;15;..\CommonPlugins\AuthDomains.rules.txt Rule;8580421;14;AuthDomains Rule;8580421;15;InitDomain Rule;8580421;14;..\CommonPlugins\AuthDomains.rules.txt Rule;8580421;15;..\CommonPlugins\InitDomain.rules.txt Rule;8580421;14;InitDomain Rule;8580421;14;..\CommonPlugins\InitDomain.rules.txt List;8580421;15;192.168.1.2;..\CONF\lists\DomainIP.txt List;8580421;14;192.168.1.2;..\CONF\lists\DomainIP.txt List;8580421;15;stalt.ru;..\CONF\lists\LocalDomains.txt List;8580421;14;stalt.ru;..\CONF\lists\LocalDomains.txt List;8580421;15;EServ;..\CONF\lists\AuthSources.txt List;8580421;14;EServ;..\CONF\lists\AuthSources.txt Rule;8580421;15;plugins\auth\auth_md5\DoLogin Rule;8580421;15;..\CommonPlugins\plugins\auth\auth_md5\DoLogin.rules.txt List;8580421;15;postmaster;..\CONF\lists\UserList.txt Rule;8580421;14;plugins\auth\auth_md5\DoLogin Rule;8580421;14;..\CommonPlugins\plugins\auth\auth_md5\DoLogin.rules.txt List;8580421;14;postmaster;..\CONF\lists\UserList.txt Rule;8580421;15;http-proxy\OnRequestPlugins Rule;8580421;15;conf\http-proxy\OnRequestPlugins.rules.txt Rule;8580421;15;OnStartupPlugins Rule;8580421;15;conf\OnStartupPlugins.rules.txt Rule;8580421;14;http-proxy\OnRequestPlugins Rule;8580421;15;conf\http-proxy\plugins\acl\OnRequest.rules.txt Rule;8580421;14;conf\http-proxy\OnRequestPlugins.rules.txt Rule;8580421;14;OnStartupPlugins Rule;8580421;14;conf\OnStartupPlugins.rules.txt Rule;8580421;14;conf\http-proxy\plugins\acl\OnRequest.rules.txt Rule;8580421;15;conf\http-proxy\plugins\hierarchy\OnRequest.rules.txt Rule;8580421;14;conf\http-proxy\plugins\hierarchy\OnRequest.rules.txt Rule;8580421;15;conf\http-proxy\plugins\cache\OnRequest.rules.txt Rule;8580421;14;conf\http-proxy\plugins\cache\OnRequest.rules.txt Rule;8580421;15;TCP_MISS Rule;8580421;15;DIRECT Rule;8580421;15;DIRECT-CONNECTION Rule;8580421;14;TCP_HIT Rule;8580421;14;http-proxy\OnRequestComplete Rule;8580421;14;conf\http-proxy\OnRequestComplete.rules.txt Rule;8580421;14;OnDisconnect Rule;8580421;14;conf\OnDisconnect.rules.txt Rule;8580468;15;http-proxy\OnRequestComplete Rule;8580468;15;conf\http-proxy\OnRequestComplete.rules.txt Rule;8603750;0;OnShutdown Rule;8603750;0;conf\OnShutdown.rules.txt <30>TCPD, Service stopped
wikipost
psSnowman25.06.2010 14:56
Закомментировал IpMacAuth. Тормоза исчезли. Так. Уже есть куда копать.
wikipost
ac25.06.2010 15:36
Списки IP-авторизации одинаковые на машинах? Ну, значит, поиск MAC-адреса (ARP) тормозит — блуждают где-то по сети arp-пакеты.
wikipost
psSnowman25.06.2010 15:42
Правило, вызывающее задержки выявил.
Эксперимент 3.
В CommonPlugins\IpMacAuth.rules.txt закомментировал единственную строчку.
Тормоза пропали.
Написал там CLIENT_MAC TYPE CR. Тормоза вернулись.
В Windows прописал arp -s IP_клиента MAC_клиента
Тормоза пропали.
Вывод. У EProxy проблемы с определением MAC адреса. Что понятно. Клиент за маршрутизатором. Тем не менее. В Win2003 такой проблемы не возникало. Не мог, но и не тормозил.
wikipost
psSnowman25.06.2010 15:44
ac пишет: Списки IP-авторизации одинаковые на машинах? Ну, значит, поиск MAC-адреса (ARP) тормозит — блуждают где-то по сети arp-пакеты.

Все абсолютно одинаковое.
Блуждают. Вот как это обойти. Мол не смог определить — не надо. Не ждать эти 7-10 секунд.
wikipost
ac25.06.2010 16:15
Таймаута у функции ОС SendARP нет. Так что выбор только "вызывать/не-вызывать". Могу сделать флаг "работать без MAC".
wikipost
psSnowman25.06.2010 16:22
ред: 25.06.2010 16:23
ac пишет: Таймаута у функции ОС SendARP нет. Так что выбор только "вызывать/не-вызывать". Могу сделать флаг "работать без MAC".

Наверное это сейчас единственный выход. Это будет и в E4?

p.s. Сейчас убрал функцию Client_MAC из файла. Но это не есть хорошо. Лучше действительно флаг.
wikipost
psSnowman25.06.2010 16:42
ред: 25.06.2010 16:47
У 2008 сервера имеется альтернатива SendARP
http://msdn.microsoft.com/en-us/library/aa366358(VS.85).aspx
"On Windows Vista and later, the ResolveIpNetEntry2 function can used to replace the SendARP function. An ARP request is sent if the Address member of the MIB_IPNET_ROW2 structure passed to the ResolveIpNetEntry2 function is an IPv4 address. "

Еще неплохая альтернатива — это GetIpNetTable.
Теоретически должна работать значительно быстрее. Так-как не посылает ARP запросов. А просто проверяет локальную таблицу. А если с компьютером установлено соединение (как в нашем случае) и адрес возможно получить, то он будет в локальной таблице.
wikipost
ac25.06.2010 17:09
E4 использует эти функции например при выводе таблички "Система/Сеть/Соседи". Если мы не посылаем ARP-запросы, то таблица и не обновляется.

Вообще, если верить тому же MSDN'у, то Vista и W2008 должны кэшировать ARP-информацию, и не отправлять лишние ARP-запросы. На практике, как видите, это не так. Из вашего эксперимента можно сделать вывод, что скорее W2003 кэширует, а W2008 нет.
wikipost
psSnowman25.06.2010 21:25
Полагаю, дело немного в другом. Кэширует и 2003 и 2008 и Vista. Только 2003, не получив клиентского MACа (т.к. тот за маршрутизатором) удовлетворяет любопытство EServ'а пустой строкой или сообщением типа "не знаю" и еще какое-то время не повторяет попыток узнать этот самый MAC. А 2008 более настырен. Долбит как дятел, каждый раз, когда EProxy спрашивает про MAC, и соответственно ждет каждый раз по 7 секунд. ЖДет естественно впустую т.к. через маршрутизатор ARP не проходит.
wikipost
psSnowman28.06.2010 07:00
Появилась еще мысль, как это обойти. Флаг в принципе не обязателен.
Можно просто проверять поле "MAC клиента" в файле. Если 0 или *, Client_MAC не вызывать.
И все. Задача с блеском решена
wikipost
Работает на Eserv/5.05567 (10.02.2020)