우분투 14.04 LTS에서 Django 1.6.7 및 Postgres 9.3을 사용하는 장고 설정이 있습니다.
어떤 시점에서든 사이트는 2.5GHz의 쿼드 코어 제온 E5-2670이며 16GB의 램을 갖춘 PostgreSQL 데이터베이스에 약 250 개의 동시 연결을 제공합니다. 하루 종일 특정 기계의로드 평균은 약 20-30입니다.
때때로 데이터베이스에 연결 시간이 초과되었다는 이메일을 보초로 보내 게되며 일종의 연결 풀링을 사용하면이 문제를 완화하는 데 도움이 될뿐만 아니라 데이터베이스의로드를 약간 줄일 수 있습니다.
Django 1.6을 사용하고 있기 때문에 우리는 내장 풀링을 사용할 수 있습니다. 그러나 CONN_MAX_AGE를 10 초 또는 60 초로 설정하면 거의 동시에 동시 연결 수가 허용되는 최대 설정 (일반적으로 볼 수있는 것의 약 두 배)으로 이동하고 연결이 거부되기 시작합니다.
그래서, 그것은 이제까지 이유, 연결이 무엇을 표시 하고 있습니다 지속,하지만 그들은 되지 않습니다 재사용된다.
이것의 원인은 무엇입니까?
추신. 또한 --worker-class = eventlet과 함께 gunicorn을 사용하고 있습니다. 아마도 이것이 우리의 재앙의 근원일까요?