2016-09-10 2 views
0

내가 여기 http://www.tornadoweb.org/en/stable/guide/running.html 서버가 로컬 MySQL의 인스턴스에 연결되어토네이도 여러 프로세스 : 만드는 여러 MySQL의 연결

(server.start (N))를 설명하는 첫 번째 방법을 사용하여 여러 프로세스에 걸쳐 토네이도 HTTPS 서버를 실행하는거야 토네이도 프로세스마다 독립적 인 MySQL 연결을 원합니다.

그러나 지금은 SHOW PROCESSLIST의 출력에 따라 MySQL 연결이 하나만 있습니다. server.start (n) 및 IOLoop.current(). start()를 호출하기 전에 연결을 설정하기 때문에 이러한 현상이 발생합니다.

실제로 이해가 안가는 부분은 server.start (n) 호출 후 생성 된 프로세스가 일부 데이터 (예 : 동일한 모듈 내의 전역 변수)를 공유하는지 또는 완전히 독립적인지 여부입니다.

server.start (n)를 호출 한 후 연결해야합니까? 또는 IOLoop.current(). start()를 호출 한 후? 그렇게한다면 Tornado 프로세스 당 하나의 MySQL 연결이 생깁니 까?

감사

답변

1

각각의 자식 프로세스는 start(n)가 호출 될 때 부모 프로세스에 존재하는 변수의 복사본을 가져옵니다. 연결과 같은 것들을 위해서, 이것은 보통 문제를 일으킬 것입니다. 다중 프로세스 모드를 사용하는 경우 하위 프로세스를 시작하기 전에 가능한 한 최소한으로 수행해야하므로, start(n) 이후 (서버가 중지 될 때까지 IOLoop.start(); IOLoop.start())까지는 mysql 연결을 만들지 마십시오.

+1

마지막으로 토네이도 웹 사이트에서 권장하는 솔루션을 선택했습니다. 즉 nginx를 여러 토네이도 프로세스 앞에 역방향 프록시로 사용하고 있습니다. 이는 제로 다운 타임으로 업데이트를 할 수 있다는 귀중한 이점을 제공합니다. – pAkY88