복붙노트

[SPRING] 부두 시동 지연

SPRING

부두 시동 지연

나는 부두가 시작될 때 1 분의 지연을 초래할 것이 무엇인지 알아 내려고하고있다. 구성 문제, 응용 프로그램 또는 다른 것입니까?

저는 Jetty 7 (jetty-7.0.1.v20091125 2009 년 11 월 25 일)을 서버에 설치하고 45MB ROOT.war 파일을 webapps 디렉토리에 배포합니다. 이것은 Jetty에서 구성된 유일한 웹 애플리케이션입니다. 다음 명령으로 Jetty를 시작합니다.

java -DSTOP.PORT=8079 -DSTOP.KEY=mystopkey -Denv=stage -jar start.jar etc/jetty-logging.xml etc/jetty.xml &

이 작업을 수행 한 직후 두 줄의 출력이 표시됩니다.

2010-03-07 14:20:06.642:INFO::Logging to StdErrLog::DEBUG=false via org.eclipse.jetty.util.log.StdErrLog
2010-03-07 14:20:06.710:INFO::Redirecting stderr/stdout to /home/zing/jetty-distribution-7.0.1.v20091125/logs/2010_03_07.stderrout.log

Enter 키를 누르면 명령 프롬프트가 다시 나타납니다. 로그 파일 (logs / 2010_03_07.stderrout.log)을 보면 처음부터 다음과 같은 내용을 볼 수 있습니다.

2010-03-07 14:08:50.396:INFO::jetty-7.0.1.v20091125
2010-03-07 14:08:50.495:INFO::Extract jar:file:/home/zing/jetty-distribution-7.0.1.v20091125/webapps/ROOT.war!/ to /tmp/Jetty_0_0_0_0_8080_ROOT.war___.8te0nm/webapp
2010-03-07 14:08:52.599:INFO::NO JSP Support for , did not find org.apache.jasper.servlet.JspServlet
2010-03-07 14:09:51.379:INFO::Set web app root system property: 'webapp.root' = [/tmp/Jetty_0_0_0_0_8080_ROOT.war___.8te0nm/webapp]
2010-03-07 14:09:51.585:INFO::Initializing Spring root WebApplicationContext
INFO  - ContextLoader              - Root WebApplicationContext: initialization started
INFO  - XmlWebApplicationContext   - Refreshing Root WebApplicationContext: startup date [Sun Mar 07 14:09:51 PST 2010]; root of context hierarchy
...

3 번째 줄과 4 번째 줄 사이에 1 분의 긴 멈춤이 있음을 알 수 있습니다. 부두는이 시점에서 무엇을하고 있습니까? 다른 어떤 일이 벌어 질 수 있습니까? 아직 Spring 초기화를 시작한 것조차 보이지 않습니다.

참고로 / tmp 디렉토리를 점검하여 war 파일의 압축을 풀 때가 아닐지라도 파일은이 1 분 지연이 시작될 때에도 완전히 압축이 해제되었습니다.

최신 정보:

제안 덕분에 DEBUG 로깅을 추가했습니다. 전쟁 파일을 추출하는 데 약 2 초가 걸렸습니다. 그러나 Init SecureRandom에 약 41 초 지연이 있습니다.

2010-03-07 21:54:45.414:DBUG::Starting SessionHandler@79884a40@
2010-03-07 21:54:45.414:DBUG::Starting org.eclipse.jetty.server.session.HashSessionManager@5fe8ce8
2010-03-07 21:54:45.416:DBUG::Container org.eclipse.jetty.server.Server@35175422 + org.eclipse.jetty.server.session.HashSessionIdManager@1d96f4b5 as sessionIdManager
2010-03-07 21:54:45.416:DBUG::Starting org.eclipse.jetty.server.session.HashSessionIdManager@1d96f4b5
2010-03-07 21:54:45.416:DBUG::Init SecureRandom.
2010-03-07 21:55:26.244:DBUG::STARTED org.eclipse.jetty.server.session.HashSessionIdManager@1d96f4b5
2010-03-07 21:55:26.247:DBUG::STARTED org.eclipse.jetty.server.session.HashSessionManager@5fe8ce8
2010-03-07 21:55:26.248:DBUG::Starting ConstraintSecurityHandler@6b9cd75a@
2010-03-07 21:55:26.261:DBUG::Starting ServletHandler@62c2ee15@

SecureRandom이란 무엇이며, 왜이 지연을 일으키는가?

해결책:

부하가 충분하지 않은 시스템에 문제가있는 것 같습니다. 나는 이것을 새로운 스테이징 서버로 설정했고 나 외에는 아무도 사용하지 않았다. 따라서 시스템은 난수 생성기가 충분한 난수를 신속하게 생성 할 수있을만큼 엔트로피가 없습니다.

해결법

  1. ==============================

    1.부두 7 (및 더 낮은) :

    부두 7 (및 더 낮은) :

    -Dorg.eclipse.jetty.util.log.DEBUG = true (Jetty / Starting / Porting to Jetty 7 참조)를 사용하여 (매우) 자세한 디버그 로깅을 설정하고이 시간 동안 무슨 일이 일어나는지 확인하십시오.

    보조 노트로, 당신은 아마 jsp 지원을 필요로 할 것이다. 그래서 시작할 때 -DOPTIONS = Server, deploy, jsp를 보내야한다. (Jetty-7.0.x 실행하기를 보라).

    그리고 Jetty 7.x에서 멋진 것을 필요로하지 않는다면, Jetty 7 eclipse 대신에 Jetty 6을 사용해야합니다 (Eclipse 마이그레이션, 더 나은 문서화, 사용하기 쉽기 때문에 문제가 더 적습니다).

    부두 8 :

    Jetty 8.1에서는 시스템 속성 [org.eclipse.jetty.util.log.DEBUG]이 사용되지 않습니다! (대신 org.eclipse.jetty.LEVEL = DEBUG 사용)

  2. ==============================

    2.로깅 레벨을 DEBUG로 변경하고 흥미로운 것을 보여주는 그것을보십시오. 그 밖의 것이 없다면 시동 순서에서 문제가있는 곳을 좁힐 수 있습니다.

    로깅 레벨을 DEBUG로 변경하고 흥미로운 것을 보여주는 그것을보십시오. 그 밖의 것이 없다면 시동 순서에서 문제가있는 곳을 좁힐 수 있습니다.

  3. from https://stackoverflow.com/questions/2398268/jetty-startup-delay by cc-by-sa and MIT license