Rails DB Performance с несколькими работниками - PullRequest
0 голосов
/ 22 ноября 2010

Я работаю над приложением, которое работает как поисковая система, и все время у него есть работники в фоновом режиме, которые ищут в Интернете и добавляют результаты в таблицу Results .

Хотя все работает отлично, в последнее время я начал получать огромное время отклика, пытаясь просматривать, редактировать или удалять результаты.Я предполагаю, что таблица Results постоянно блокируется работниками, которые продолжают добавлять новые данные, что означает, что веб-запросы должны ждать освобождения таблицы.

Однако я не могунайти способ снизить эту нагрузку на таблицу Results и ускорить время обработки моих веб-запросов.Кому-нибудь приходилось иметь дело с чем-то подобным?

Поисковые роботы постоянно читают и добавляют новые вещи, добавляют новые результаты по мере их обнаружения.Мне было интересно, может быть, если только добавление основной массы результатов в базу данных после поиска поможет, или это ухудшит ситуацию, так как это займет больше времени.

В любом случае, я в растерянностии буду признателен за любую помощь или идеи.

Я использую RoR 2.3.8 и размещаю свое приложение на Heroku с PostgreSQL

Ответы [ 3 ]

2 голосов
/ 22 ноября 2010

PostgreSQL не блокирует таблицы для чтения и записи.Начните регистрировать ваши запросы и попытайтесь выяснить, что происходит.Гадание не помогает, вы должны копаться в этом.

1 голос
/ 22 ноября 2010

Возможно, вы захотите поместить кеш перед базой данных.В Heroku вы можете использовать memcached в качестве хранилища кеша очень просто .

Это снимет нагрузку с чтения БД.Вы можете даже заставить своих поисковых роботов обновлять кеш, когда они добавляют новые вещи, так что вы можете использовать очень большой срок действия, и ваше приложение Rails очень редко (если вообще когда-либо) попадет в базу данных напрямую для простого чтения.

1 голос
/ 22 ноября 2010

Попробуйте команду NOWAIT . Поскольку вы только добавляете новые вещи с фоновыми рабочими, я предполагаю, что при просмотре / редактировании / удалении не будет конфликтов блокировки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...