Я использую простую библиотеку PHP для добавления документов в индекс SOLR через HTTP.
В данный момент задействовано 3 сервера:
- Блок PHP, выполняющий задание индексации
- Поле базы данных, содержащее индексируемые данные
- Поле Solr.
При скорости 80 документов в секунду (из 1 миллиона документов) я заметил необычно высокую частоту прерываний сетевых интерфейсов на PHP и блоках solr (2000 / сек; более того, графики почти идентичны - когда частота прерываний на блоке PHP возрастает, она также возрастает на блоке Solr), но гораздо меньше - на блоке базы данных (300 / сек). Я думаю, это просто потому, что я открываю и повторно использую одно соединение с сервером базы данных, но каждый отдельный запрос Solr в настоящее время открывает новое HTTP-соединение через cURL, благодаря тому, как написана клиентская библиотека Solr.
Итак, мой вопрос:
- Можно ли сделать cURL, чтобы открыть сеанс keepalive?
- Что нужно для повторного использования соединения? - это так же просто, как повторно использовать ресурс дескриптора cURL?
- Нужно ли устанавливать какие-либо специальные параметры cURL? (например, принудительный HTTP 1.1?)
- Есть ли ошибки, связанные с keepalive-связями cURL? Этот сценарий выполняется часами; смогу ли я использовать одно соединение или мне нужно будет периодически переподключаться?