2013-10-13 2 views
2

У меня есть скрипт python, который собирает информацию для участников из разных API (wikipedia, tmdb и imdb), а затем добавляет их в базу данных postgresql. Он работал хорошо, но иногда был немного медленным из-за всех запросов API.Threading и Django db create operations

Так я изменил этот сценарий, чтобы использовать многопоточность, однако работает он теперь производит следующее сообщение об ошибке:

OperationalError: FATAL: remaining connection slots are reserved for non-replication superuser connections 

Am Я ударяя базу данных слишком много в короткий промежуток времени, возможно? Заранее спасибо

ответ

1

Позвольте больше подключений в вашем postgresql.conf, увеличив значение max_connections.

ОБНОВЛЕНО:

Вам также может понадобиться увеличить значение SHMMAX. Запустите эту команду с терминала:

sysctl -w kernel.shmmax=1073741824 

Это установит SHMMAX в 1G. Настройте это в соответствии с размером оперативной памяти.

+0

Пробовал и не смог: «2013-10-13 17:57:59 BST FATAL: не удалось создать сегмент разделяемой памяти: неверный аргумент 2013-10-13 17:57:59 BST СОВЕТ. Эта ошибка обычно означает, что Запрос PostgreSQL для сегмента разделяемой памяти превысил параметр SHMMAX вашего ядра. Вы можете либо уменьшить размер запроса, либо перенастроить ядро ​​с большим SHMMAX. Чтобы уменьшить размер запроса (в настоящее время 34955264 байт), уменьшите использование общей памяти PostgreSQL, возможно, за счет сокращения shared_buffers или max_connections. Если размер запроса уже невелик, возможно, что он меньше, чем SHMMIN вашего ядра ... – itsquestiontime1

+0

Попробуйте запустить эту команду в терминале: 'sysctl -w kernel.shmmax = 1073741824'. Это установит SHMMAX в 1G Настройте это в соответствии с размером оперативной памяти. – raacer