Sto utilizzando una semplice libreria PHP per aggiungere documenti a un indice SOLR, tramite HTTP.HTTP persistente/keepalive con la libreria PHP Curl?
Ci sono 3 server coinvolti, attualmente:
- La casella di PHP che esegue il processo di indicizzazione
- Una scatola di database che contiene i dati che vengono indicizzati
- La scatola solr.
A 80 documenti/sec (su 1 milione di documenti), sto notando un tasso di interruzione insolitamente alto sulle interfacce di rete sulle scatole di PHP e Solr (2000/sec; per di più, i grafici sono quasi identico - quando il tasso di interruzione sui picchi di box PHP, si innesca anche sulla casella Solr), ma molto meno sul box del database (300/sec). Immagino che questo sia semplicemente perché apro e riuso una singola connessione al server del database, ma ogni singola richiesta Solr sta attualmente aprendo una nuova connessione HTTP tramite cURL, grazie al modo in cui è scritta la libreria del client Solr.
Quindi, la mia domanda è:
- può arricciare essere fatto per aprire una sessione keepalive?
- Cosa serve per riutilizzare una connessione? - è semplice come riutilizzare la risorsa handle cURL?
- Devo impostare le opzioni speciali CURL? (ad esempio, forza HTTP 1.1?)
- Esistono trucchi con connessioni keepalive cURL? Questo script viene eseguito per ore alla volta; sarò in grado di utilizzare una singola connessione o dovrò riconnettermi periodicamente?
Beh io ho l'uso d dove stavamo analizzando un intero sito con molte pagine che richiedevano l'autenticazione e mantenevano una sessione in tutto il mondo. Utilizzando la risorsa di gestione iniziale è possibile continuare a eseguire comandi per ottenere pagine e mantenere la stessa sessione e connessione con il client. Utilizzando la riga di comando questo è durato per circa 20 minuti (per tutti i nostri requisiti di dati - quindi potrebbe durare più a lungo) senza bisogno di ricollegarsi. Ma non sono sicuro se questo è quello che stai chiedendo quindi è un commento e non una risposta :) –
Un'altra nota, spesso ci sono opzioni che dovrai impostare in base a ciò che stai facendo e al server che sei collegamento a. Tutto questo è ben documentato qui: http://uk3.php.net/manual/en/function.curl-setopt.php –
Questa parte delle FAQ è rilevante, anche se non eccessivamente dettagliata: http: //curl.haxx .se/docs/faq.html # Can_I_perform_multiple_requests –