2010-02-26 5 views
0

또한 serverfault에 속할 수도 있습니다. 그것은Tomcat의 Jruby Rails 응용 프로그램 CPU 사용량

여기 내 설정의 서버 설정 및 코드 (나는 생각한다) 사이에 콤보의 종류의 :

Rails 2.3.5 app running on jruby 1.3.1 
Service Oriented backend over JMS with activeMQ 5.3 and mule 2.2.1 
Tomcat 5.5 with opts: "-Xmx1536m -Xms256m -XX:MaxPermSize=256m -XX:+CMSClassUnloadingEnabled" 
Java jdk 1.5.0_19 
Debian Etch 4.0 

top 실행 때마다 난 내 사이트에 링크를 클릭, 내 java 공정 CPU 사용 스파이크를 참조 . 작은 페이지 인 경우 때때로 10 %의 사용량이지만 때로는 좀 더 복잡한 페이지에서 CPU가 44 %까지 올라갑니다. 이 경우 서버의 load average이 꾸준히 8 개 이상 올라가는 동안 요청은 몇 분 이상 걸릴 수 있습니다. 이것은 일부 서비스에서 몇 가지 요청을로드하는 링크 하나를 클릭 한 것입니다. 너무 복잡합니다. 자바 프로세스 메모리는 대부분 20 % 정도를 차지합니다.

조금만 놓아두면 평균로드가 줄어 듭니다. 링크를 몇 개 더 클릭하면 다시 올라갈 수 있습니다.

나는 레일 프론트 엔드를위한 작은 아마존 인스턴스와 모든 서비스를위한 대형 인스턴스를 실행 중이다.

이제는 분명히 용납되지 않습니다. 한 명의 사용자가로드 평균을 8로 높일 수 있으며 두 사람이로드 평균을 사용하면 사이트 사용 기간 동안로드 평균을 유지합니다. 무슨 일이 일어나는지 조사하기 위해 내가 뭘 할 수 있는지 궁금해? 나는 이것을 어떻게 디버깅 할 수 있는지에 관해 완전한 손실을 느낀다. (바람둥이 컨테이너 안쪽이 아니라 jruby를 통해 레일 앱을 실행할 때 로컬로 실행되지 않습니다.)

jruby 앱을 어떻게 검사하여 내가 어떻게 사용량을 줄일 수 있는지 알아낼 수 있습니까? 거대한 자원?

이전에는 조금 겉으로는 무작위로 보였지만, 지금은 2.2.2에서 2.2.5로 업그레이드 한 후에는 완전히 볼 수있어 사이트를 완전히 사용할 수 없게 만듭니다.

어디서나 볼 수있는 정보를 제공해 주시면 감사하겠습니다. 나는 어디서부터 시작해야할지 모른다.

답변

0

Tomcat과 다른 것으로 예기치 않은 통신이 없는지 확인하십시오. 먼저 다음을 확인합니다.

  • ActiveMQ broker는 네트워크의 다른 브로커와 통신하지 않습니다. 기본적으로 AMQ 브로커는 OpenWire 자동 검색 모드에서 시작됩니다.
  • 일반적으로 JGroups/멀티 캐스트는 네트워크의 어떤 것과 통신하지 않습니다.

이 불필요한로드는 다른 응용 프로그램에서 오는 메시지 처리로 인해 발생할 수 있습니다.

+0

팁 주셔서 감사합니다. 내가 실제로 자바/activemq 주위에 내 머리를 일하고 있기 때문에 실제로 전면에있는 루비 녀석이지만 나는 기회를 얻을 때 좀 걸릴거야. – brad