#java #apache-httpclient-4.x
#java #apache-httpclient-4.x
Вопрос:
Мне нужно выполнить нагрузочный тест приложения, которое мы разрабатываем, но наш консольный журнал постоянно заполняется выводом. Из предыдущего опыта я узнал, что System.out.println( )
это относительно дорогостоящая операция, поэтому я хотел бы свести печать к минимуму.
Печать происходит только тогда, когда приложение пытается выполнить Http-post, но мы выполняем 100 из них в секунду. Мы используем HttpClient Apache 4.5.2 и HttpCore 4.4.5. Приложение работает на Tomcat 7.
Я перепробовал много разных решений: удаление клапанов Tomcat, установка уровня ведения журнала Tomcat, настройка -Djavax.net.debug=none, но, похоже, ничто не удаляет это. Кто-нибудь знает, что вызывает эти выходные данные, и как мне их отключить?
Отладочный вывод показан ниже:
2016-10-11 15:24:42,942 DEBUG [http-bio-8080-exec-3] Connection request: [route: {}->http://localhost:8080][total kept alive: 0; route allocated: 0 of 200; total allocated: 0 of 200]
2016-10-11 15:24:42,956 DEBUG [http-bio-8080-exec-3] Connection leased: [id: 0][route: {}->http://localhost:8080][total kept alive: 0; route allocated: 1 of 200; total allocated: 1 of 200]
2016-10-11 15:24:42,958 DEBUG [http-bio-8080-exec-3] Connecting to localhost:8080
2016-10-11 15:24:42,978 DEBUG [http-bio-8080-exec-3] CookieSpec selected: best-match
2016-10-11 15:24:42,994 DEBUG [http-bio-8080-exec-3] Auth cache not set in the context
2016-10-11 15:24:42,995 DEBUG [http-bio-8080-exec-3] Target auth state: UNCHALLENGED
2016-10-11 15:24:42,996 DEBUG [http-bio-8080-exec-3] Proxy auth state: UNCHALLENGED
2016-10-11 15:24:42,996 DEBUG [http-bio-8080-exec-3] Attempt 1 to execute request
2016-10-11 15:24:42,997 DEBUG [http-bio-8080-exec-3] Sending request: POST /XtService/account/getbalance HTTP/1.1
2016-10-11 15:24:42,997 DEBUG [http-bio-8080-exec-3] >> "POST /XtService/account/getbalance HTTP/1.1[r][n]"
2016-10-11 15:24:42,999 DEBUG [http-bio-8080-exec-3] >> "Content-Length: 48[r][n]"
2016-10-11 15:24:42,999 DEBUG [http-bio-8080-exec-3] >> "Content-Type: application/x-www-form-urlencoded; charset=UTF-8[r][n]"
2016-10-11 15:24:43,000 DEBUG [http-bio-8080-exec-3] >> "Host: localhost:8080[r][n]"
2016-10-11 15:24:43,000 DEBUG [http-bio-8080-exec-3] >> "Connection: Keep-Alive[r][n]"
2016-10-11 15:24:43,000 DEBUG [http-bio-8080-exec-3] >> "User-Agent: Apache-HttpClient/4.2 (java 1.5)[r][n]"
2016-10-11 15:24:43,000 DEBUG [http-bio-8080-exec-3] >> "[r][n]"
2016-10-11 15:24:43,001 DEBUG [http-bio-8080-exec-3] >> POST /XtService/account/getbalance HTTP/1.1
2016-10-11 15:24:43,001 DEBUG [http-bio-8080-exec-3] >> Content-Length: 48
2016-10-11 15:24:43,001 DEBUG [http-bio-8080-exec-3] >> Content-Type: application/x-www-form-urlencoded; charset=UTF-8
2016-10-11 15:24:43,001 DEBUG [http-bio-8080-exec-3] >> Host: localhost:8080
2016-10-11 15:24:43,001 DEBUG [http-bio-8080-exec-3] >> Connection: Keep-Alive
2016-10-11 15:24:43,001 DEBUG [http-bio-8080-exec-3] >> User-Agent: Apache-HttpClient/4.2 (java 1.5)
2016-10-11 15:24:43,001 DEBUG [http-bio-8080-exec-3] >> "categoryid=2"
2016-10-11 15:24:43,256 DEBUG [http-bio-8080-exec-3] << "HTTP/1.1 200 OK[r][n]"
2016-10-11 15:24:43,259 DEBUG [http-bio-8080-exec-3] << "Server: Apache-Coyote/1.1[r][n]"
2016-10-11 15:24:43,260 DEBUG [http-bio-8080-exec-3] << "Pragma: no-cache[r][n]"
2016-10-11 15:24:43,260 DEBUG [http-bio-8080-exec-3] << "Cache-Control: no-cache[r][n]"
2016-10-11 15:24:43,260 DEBUG [http-bio-8080-exec-3] << "Expires: Thu, 01 Jan 1970 00:00:00 GMT[r][n]"
2016-10-11 15:24:43,261 DEBUG [http-bio-8080-exec-3] << "Content-Type: application/json;charset=utf-8[r][n]"
2016-10-11 15:24:43,261 DEBUG [http-bio-8080-exec-3] << "Content-Length: 83[r][n]"
2016-10-11 15:24:43,261 DEBUG [http-bio-8080-exec-3] << "Date: Tue, 11 Oct 2016 13:24:43 GMT[r][n]"
2016-10-11 15:24:43,261 DEBUG [http-bio-8080-exec-3] << "[r][n]"
2016-10-11 15:24:43,262 DEBUG [http-bio-8080-exec-3] Receiving response: HTTP/1.1 200 OK
2016-10-11 15:24:43,262 DEBUG [http-bio-8080-exec-3] << HTTP/1.1 200 OK
2016-10-11 15:24:43,263 DEBUG [http-bio-8080-exec-3] << Server: Apache-Coyote/1.1
2016-10-11 15:24:43,263 DEBUG [http-bio-8080-exec-3] << Pragma: no-cache
2016-10-11 15:24:43,263 DEBUG [http-bio-8080-exec-3] << Cache-Control: no-cache
2016-10-11 15:24:43,263 DEBUG [http-bio-8080-exec-3] << Expires: Thu, 01 Jan 1970 00:00:00 GMT
2016-10-11 15:24:43,263 DEBUG [http-bio-8080-exec-3] << Content-Type: application/json;charset=utf-8
2016-10-11 15:24:43,263 DEBUG [http-bio-8080-exec-3] << Content-Length: 83
2016-10-11 15:24:43,263 DEBUG [http-bio-8080-exec-3] << Date: Tue, 11 Oct 2016 13:24:43 GMT
2016-10-11 15:24:43,265 DEBUG [http-bio-8080-exec-3] Connection can be kept alive for 10000 MILLISECONDS
2016-10-11 15:24:43,274 DEBUG [http-bio-8080-exec-3] << "{"status":1,"data":{"RESERVED":569.81}}"
2016-10-11 15:24:43,275 DEBUG [http-bio-8080-exec-3] Connection [id: 0][route: {}->http://localhost:8080] can be kept alive for 10000 MILLISECONDS
2016-10-11 15:24:43,275 DEBUG [http-bio-8080-exec-3] Connection released: [id: 0][route: {}->http://localhost:8080][total kept alive: 1; route allocated: 1 of 200; total allocated: 1 of 200]
Комментарии:
1. Вы могли бы взглянуть на: hc.apache.org/httpcomponents-client-ga/logging.html . Вкратце: найдите, какая реализация ведения журнала используется (например, log4J ?), Найдите ее конфигурационный файл и уменьшите категории org.apache.http (.wire).
2. Ах, вот оно что. Log4J был настроен для вывода проводной отладки на консоль. Я боролся с этим уже около двух часов. Спасибо. Я рекомендую вам опубликовать фактический ответ, чтобы я мог отметить его 🙂
Ответ №1:
Вы могли бы взглянуть на: http://hc.apache.org/httpcomponents-client-ga/logging.html .
Поэтому HttpClient использует интерфейс ведения журнала, предоставляемый пакетом ведения журнала Commons. Ведение журнала Commons предоставляет простой и обобщенный интерфейс журнала для различных пакетов ведения журнала. Используя ведение журнала Commons, HttpClient можно настроить для различных режимов ведения журнала. Это означает, что пользователю придется сделать выбор, какую платформу ведения журнала использовать. По умолчанию ведение журнала Commons поддерживает следующие структуры ведения журнала:
— Log4J
— java.util.logging
— SimpleLog (внутренний для ведения журнала Commons)
Подавляющее большинство выходных данных, которые вы наблюдаете, на самом деле являются «проводным» протоколированием (то есть фактическим HTTP-трафиком) :
Проводной журнал используется для регистрации всех данных, передаваемых на серверы и с серверов при выполнении HTTP-запросов. В проводном журнале используется
org.apache.http.wire
категория ведения журнала. Этот журнал должен быть включен только для отладки проблем, так как он будет генерировать чрезвычайно большой объем данных журнала.
В двух словах: найдите, какая реализация ведения журнала используется (например, log4J ?), Найдите его конфигурационный файл и сократите org.apache.http(.wire)
категории