2012-04-18 3 views
1

나는 MySQL, Grails, Java와 싸우고있다.mysql 프로세스 간의 우선 순위 설정

  1. Grails 앱이 실행되는 앱 서버가 있습니다.
  2. mysql db가있는 다른 서버가 있습니다.
  3. 저는 하나의 Java 응용 프로그램을 가지고 있으며 서버에 연결하여 CSV 파일로 데이터를 내보냅니다.

나는 DB에 많은 데이터 (10 백만개의 레지스터)가 있고, 15 분마다 Grails 앱이 DB에 연결되어 새로운 정보를 확인하고 저장한다. 정상적인 작동 방법.

제 문제는 grails 응용 프로그램이 작동하는 동안 DB의 정보 일부를 내보내는 Java 응용 프로그램을 실행하고 싶습니다. 그러나 내 문제는 프로세스가 느리게 재검색된다는 것입니다. 나는 설명 할 것이다 :

  1. Grails의 응용 프로그램이 작동하면, 내 자바 응용 프로그램은 모든 data.The 자바 였는지를이 CPU의 약 0.3-0 %를 소요 수출 사일 주위가 필요합니다.

  2. Tomcat을 끈 경우 결과적으로 DB에 대한 모든 연결 (mySQL에서 show processlist 명령)이 약 40 분이 걸리므로 모든 프로세스가 완료됩니다. Java 프로세스는 CPU의 약 85 %를 차지합니다.

나는 문제가 무엇인지에 대해 잘 모르겠지만, 나는 모든 것을 시도하고, 내 문제는 내가 Grails는 내가 내보낼 모든 시간을되는 앱을 중지 할 수 없다는 것입니다. 이 때문에, Java 프로그램의 우선 순위를 높이기 위해 프로세스 간 우선 순위를 부여하는 방법이 있습니다.

미리 답변 해 주셔서 감사합니다.

+0

그래서 Tomcat 및 Grails가 실행 중일 때 자바 기반보고 프로그램은 4 일 동안 CPU 시간이 거의 필요하지 않습니까? 그리고 자체적으로 실행될 때 (Tomcat이없고 Grails도 없음), CPU 시간 85 %에서 40 분 동안 실행됩니까? –

+0

예, 더 많거나 적습니다. 내 Java 응용 프로그램 외에도 DB에 더 많은 연결이있는 것처럼 보입니다. 모든 것이 실제로 느리며 가장 낮은 우선 순위를 가진 것처럼 보입니다. –

+0

DB는 InnoDB입니다. –

답변

3

이것은 데이터베이스 잠금 문제와 유사합니다. innotop 같은 도구를 가져와 데이터베이스에서 무슨 일이 일어나는지 자세히 살펴볼 것을 권합니다. 특히 grails 앱이 실행 중일 때 열려있는 테이블, 잠금 및 쿼리를주의 깊게 살펴볼 것입니다.

+0

진정한 @ataylor처럼 보입니다. 하지만 제 문제는 정상적으로 grails 앱이 5 분 동안 15 분마다 정기적 인 작업을한다는 것입니다. 그러나 다른 시간에는 아무것도하지 않고 있지만 어쨌든 느린 성능이 계속됩니다. –