2012-07-02 2 views
2

약 1 년 동안 개발 된 시스템에서 며칠이 지난 지금부터 재생에서 일정한 CPU로드가 발생합니다! 섬기는 사람. 두 대의 서버가 있는데 하나는 활성 서버이고 하나는 핫 스페어 서버입니다. 과거에 핫 스레 서버는 부하가 없거나 무시할 수있는 부하를 나타 냈습니다. 하지만 이제는 50-110 %의 일정한 CPU를 사용합니다 (Linux에서는 top 사용).재생 프레임 워크가있는 CPU로드

원인을 쉽게 알아낼 수있는 방법이 있습니까? 디버깅 할 때 내 MacBook에서 이러한 동작이 나타나지 않습니다 (보통 0.1-1 %). 이것은 내가 알고있는 한 지난 며칠 동안에 만 발생했던 것입니다.

이것은 핫 스페어의 상태 인쇄입니다. 어떤 컨트롤러가 예약 된 작업에서 떨어져 조회하지 않습니다 볼 수 있습니다 (인해 깃발이 서버에서 수행하지 않지만 시작되는)과 같이

~  _   _ 
~ _ __ | | __ _ _ _| | 
~ | '_ \| |/ _' | || |_| 
~ | __/|_|\____|\__ (_) 
~ |_|   |__/ 
~ 
~ play! 1.2.4, http://www.playframework.org 
~ framework ID is prod-frontend 
~ 
~ Status from http://localhost:xxxx/@status, 
~ 
Java: 
~~~~~ 
Version: 1.6.0_26 
Home: /usr/lib/jvm/java-6-sun-1.6.0.26/jre 
Max memory: 64880640 
Free memory: 11297896 
Total memory: 29515776 
Available processors: 2 

Play framework: 
~~~~~~~~~~~~~~~ 
Version: 1.2.4 
Path: /opt/play 
ID: prod-frontend 
Mode: PROD 
Tmp dir: /xxx/tmp 

Application: 
~~~~~~~~~~~~ 
Path: /xxx/server 
Name: iDoms Server 
Started at: 07/01/2012 12:05 

Loaded modules: 
~~~~~~~~~~~~~~ 
secure at /opt/play/modules/secure 
paginate at /xxx/server/modules/paginate-0.14 

Loaded plugins: 
~~~~~~~~~~~~~~ 
0:play.CorePlugin [enabled] 
100:play.data.parsing.TempFilePlugin [enabled] 
200:play.data.validation.ValidationPlugin [enabled] 
300:play.db.DBPlugin [enabled] 
400:play.db.jpa.JPAPlugin [enabled] 
450:play.db.Evolutions [enabled] 
500:play.i18n.MessagesPlugin [enabled] 
600:play.libs.WS [enabled] 
700:play.jobs.JobsPlugin [enabled] 
100000:play.plugins.ConfigurablePluginDisablingPlugin [enabled] 

Threads: 
~~~~~~~~ 
Thread[Reference Handler,10,system] WAITING 
Thread[Finalizer,8,system] WAITING 
Thread[Signal Dispatcher,9,system] RUNNABLE 
Thread[[email protected],5,main] WAITING 
Thread[Timer-0,5,main] TIMED_WAITING 
Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#0,5,main] TIMED_WAITING 
Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#1,5,main] TIMED_WAITING 
Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#2,5,main] TIMED_WAITING 
Thread[jobs-thread-1,5,main] TIMED_WAITING 
Thread[jobs-thread-2,5,main] TIMED_WAITING 
Thread[jobs-thread-3,5,main] TIMED_WAITING 
Thread[New I/O server boss #1 ([id: 0x7065ec20, /0:0:0:0:0:0:0:0:9001]),5,main] RUNNABLE 
Thread[DestroyJavaVM,5,main] RUNNABLE 
Thread[New I/O server worker #1-3,5,main] RUNNABLE 

Requests execution pool: 
~~~~~~~~~~~~~~~~~~~~~~~~ 
Pool size: 0 
Active count: 0 
Scheduled task count: 0 
Queue size: 0 

Monitors: 
~~~~~~~~ 
controllers.ReaderJob.doJob(), ms.   ->  114 hits;  4.1 avg;  0.0 min; 463.0 max; 
controllers.MediaCoderProcess.doJob(), ms. ->  4572 hits;  0.1 avg;  0.0 min; 157.0 max; 
controllers.Bootstrap.doJob(), ms.   ->  1 hits;  0.0 avg;  0.0 min;  0.0 max; 

Datasource: 
~~~~~~~~~~~ 
Jdbc url: jdbc:mysql://xxxx 
Jdbc driver: com.mysql.jdbc.Driver 
Jdbc user: xxxx 
Jdbc password: xxxx 
Min pool size: 1 
Max pool size: 30 
Initial pool size: 3 
Checkout timeout: 5000 

Jobs execution pool: 
~~~~~~~~~~~~~~~~~~~ 
Pool size: 3 
Active count: 0 
Scheduled task count: 4689 
Queue size: 3 

Scheduled jobs (4): 
~~~~~~~~~~~~~~~~~~~~~~~~~~ 
controllers.APNSFeedbackJob run every 24h. (has never run) 
controllers.Bootstrap run at application start. (last run at 07/01/2012 12:05:32) 
controllers.MediaCoderProcess run every 15s. (last run at 07/02/2012 07:10:46) 
controllers.ReaderJob run every 600s. (last run at 07/02/2012 07:05:36) 

Waiting jobs: 
~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
controllers.MediaCoderProcess will run in 2 seconds 
controllers.APNSFeedbackJob will run in 17672 seconds 
controllers.ReaderJob will run in 276 seconds 
+2

는 리눅스 서버인가요? 서버를 재부팅하려고 시도 했습니까? 'leap second' 리눅스 커널 버그 (http://it.slashdot.org/story/12/07/01/1920217/leap-second-bug-causes-crashes) –

+0

스팟 온! 다시 부팅하면 모든 것이 정상으로 돌아옵니다. 질문에 대답하고 싶다면 대답을 수락합니다. –

+0

완료! 감사 :-) –

답변

4

서버는 리눅스에서 실행, 당신은 타격을받을 수 있습니다 경우 지난 주말에 나타나는 Leap Second bug에 의해

이 버그는 Linux 커널 (스레드 관리)에 영향을 미치므로 스레드 (JVM, mysql 등)를 사용하는 응용 프로그램은 CPU 부하가 높을 수 있습니다.