2013-04-09 3 views
1

멀티 스레드 웹 응용 프로그램에서 ZODB.DB 호출의 pool_size에 대한 합리적인 기본값은 무엇입니까?ZODB pool_size에 대한 합리적인 설정

실제 기본값 인 7을 그대로 유지하면 db-interacting 처리기를 탐색하는 유일한 사람인 경우에도 WARNING이 연결됩니다. 너무 높은 숫자를 설정할 수 있습니까? 정확히 무엇을 설정해야할지 결정하는 요인은 무엇입니까?

답변

3

풀 크기는 '가이드 라인'일뿐입니다. 이 크기를 초과하면 경고가 기록됩니다. 번을 사용하려면 연결 수인 CRITICAL 로그 메시지가 대신 등록됩니다. 이들은 이 응용 프로그램에서 너무 많은 연결을 사용하고 있음을 나타냅니다.

풀은 연결을 닫을 때 풀 크기로 유지되는 연결 수를 줄이려고 시도합니다.

응용 프로그램의 최대 스레드 수로 설정해야합니다. 거의 독점적으로 스레딩 대신 비동기 이벤트를 사용한다고 생각하는 토네이도의 경우 결정하기가 더 어려울 수 있습니다. Tornado에서 최대 동시 연결 수를 구성 할 수있는 경우 풀 크기를 숫자로 설정해야합니다.

응용 프로그램이 수백 또는 수천 개의 동시 연결로 확장 될 때 ZODB가 어떻게 실행되는지는 잘 모르겠습니다. 나는 지금까지 단지 100 개 정도의 동시 연결을 여러 프로세스와 심지어 컴퓨터 (ZEO 또는 RelStorage를 사용하여 ZODB를 처리하는 데 사용)에 퍼져서 사용했습니다.

이러한 연결 대부분이 읽기만하면 잘 될 것이라고 말하고 싶습니다. 확장성에 관한 한 ZODB의 약점 인 동시에 동일한 객체에 동시에 쓰는 것입니다.

+0

몇 가지 동시 연결 (어쩌면 2 % -5 % 쓰기)을 통해이 특정 응용 프로그램을 확장 할 것을 기대하지는 않습니다. ** 7 **에서 경고를 받기 시작한 것이 조금 걱정 스럽습니다 ** . – Inaimathi

+0

@Inaimathi : 일반적인 Zope 인스턴스는 asyncore 네트워크 레이어 뒤에있는 요청을 처리하기 위해 단지 몇 개의 스레드를 사용하므로 많은 동시 연결이 필요하지 않으므로 기본값은 낮습니다. 특정 클러스터 구성의 경우 GIL을 피하고 여러 코어를보다 잘 활용하기 위해 프로세스를 가로 질러 확장하는 경우에도 단지 2 개의 스레드로 튜닝 된 인스턴스가 있습니다. –