2016-11-16 5 views
0

배치 작업을 통해 데이터를 처리하기 위해 spring-xd를 사용하고 있습니다. 좋은 수의 작업이 4 개의 컨테이너에서 병렬로 실행됩니다. 10 ~ 40 개의 직업이있는 곳. 이 중 대부분은 1 분 안에 완료됩니다. 데이터 저장소에 redis (rabbitmq 아님)와 mysql을 사용하고 있습니다. Spring-xd-batch는 작업/스텝 통계를 위해 다른 mysql-db를 사용하고 나의 어플리케이션은 다른 목적으로 mysql-db를 사용한다. 두 mysql-dbs는 같은 서버에있다. 모든 4 개의 컨테이너와 동일한 mysql-db에 대한 관리 지점. 에 의한Spring-xd-batch 작업 잠금

:

내가 발견 한 것은 내가 아래의 예외를받을 수 있나요, 대부분의 시간은, 모두가 (적어도 하루에 한 번) 잘 작동하지만, 한 번에 한 동안이다 org.springframework.dao.DataAccessResourceFailureException : last_insert_id()를 얻을 수 없습니다; 상자가 된 예외는 java.sql.SQLException입니다. Lock wait timeout exceeded; 트랜잭션을 다시 시작하십시오.

이것은 spring-xd (내 응용 프로그램 아님)에 의해 throw됩니다. 예외는 특정 컨테이너 (특정 컨테이너에서 임의로 발생 함) 및 특정 작업에 특정하지 않는 예외입니다.

Google을 제적하는 시간을 보냈습니다. 업데이트 된 innodb_lock_wait_timeout을 50에서 600으로 늘 렸습니다. trx_isolation을 반복 읽기에서 업데이트했으나이 중 아무 것도 변경되지 않았습니다. 또한 느린 쿼리 로깅을 사용할 수 있지만 모든 기록 된 쿼리는 예외가 throw 된 시간 프레임과 일치하지 않습니다.

모든 포인터가 크게 감사하겠습니다.

+0

희망 [링크] (http://stackoverflow.com/questions/9058816/how-to-generate-a-dynamic-sequence-table-in-mysql) 도움이 – Faiz

+0

아니요. 죄송합니다. 그것의 관련성을 보지 마라. 어쩌면 내가 뭔가를 놓친거야? –

답변

0

제 해결 방법은 * _seq 테이블을 innodb에서 mysam 엔진으로 변경하는 것입니다. 한 달 넘게 그것을 실행하고 테이블 락 업을하지 않았습니다.