Quali sono le impostazioni ottimali per Tomcat web server?

Io sono il mantenimento di un sito web con attualmente circa 800 utenti simultanei. Il business plan dice che questo numero sarà 10 volte superiore a un anno.

Questa è la mia configurazione attuale:

<Connector port="8080" address="${jboss.bind.address}"
  maxThreads="500" maxHttpHeaderSize="8192"
  emptySessionPath="true" protocol="HTTP/1.1"
  enableLookups="false" redirectPort="8443" acceptCount="100"
  connectionTimeout="20000" disableUploadTimeout="true" />

<Connector port="8443" address="${jboss.bind.address}"
  protocol="HTTP/1.1" SSLEnabled="true"
  maxThreads="500" minSpareThreads="5" maxSpareThreads="25"
    scheme="https" secure="true" clientAuth="false"
    keystoreFile="${jboss.server.home.dir}/conf/ks.p12"
    keystoreType="PKCS12" connectionTimeout="20000"
    keystorePass="pass" sslProtocol="TLS" acceptCount="100" />

Medio usato numero di thread è di circa 400 (per ogni http/https). Ma picchi davvero usare il thread di 500. Io penso di avere problemi quando ho 10x utenti 🙂

  • Come posso ottimizzare questo?
  • Devo disattivare http mantenere vivo? Come posso configurare il timeout keep-alive?
  • Quale i valori sono buoni per acceptCount /maxThreads?
Non dare abbastanza informazioni, come si rifiutato perfettamente valide risposte, ad esempio, “per motivi politici”. Stai saturando la CPU? Di rete? Altrimenti basta impostare maxThreads=15000″. Accelerare la vostra applicazione per liberare i thread precedenti. E (se l’avete fatto) Non c’è bisogno di votare giù per le risposte che non ti piace…

OriginaleL’autore Marcel | 2008-11-04

4 Replies
  1. 4

    Penso che mettere tomcat in Apache Http server è molto più robusto e più rapido approccio. qui ci sono i pro & cons preso da http://wiki.apache.org/tomcat/FAQ/Connectors

    Perché dovrei integrare Apache Tomcat? (o non)

    Ci sono molte ragioni per integrare Tomcat Apache. E ci sono ragioni per cui non dovrebbe essere fatto. Inutile dire che tutti saranno d’accordo con le opinioni qui. Con le prestazioni di Tomcat 5 e 6, per motivi di prestazioni diventano più difficili da giustificare. Così qui sono le questioni da discutere in integrazione vs.

    • Di Clustering. Utilizzando Apache come un front-end è possibile lasciare Apache agire come una porta d’ingresso di contenuti a più istanze di Tomcat. Se uno dei tuoi Gattoni non riesce, Apache ignora e il tuo Sysadmin può dormire tutta la notte. Questo punto può essere ignorato se si utilizza un hardware loadbalancer e Tomcat funzionalità di clustering.
    • Clustering/Sicurezza. È inoltre possibile utilizzare Apache come porta di casa per diversi Gattoni per i diversi spazi dei nomi URL (/app1/, /app2/, /app3/o virtual host). I Tomcat può quindi essere in una zona protetta e dal punto di vista della sicurezza, è solo bisogno di preoccuparsi per il Apache server. Essenzialmente, Apache diventa una smart proxy server.
    • Di sicurezza. Questo argomento può ondeggiare in uno o modo. Java ha il security manager, mentre Apache è più condivise e più trucchi riguardo alla sicurezza. Non voglio entrare più in dettaglio, ma cerchiamo di Google è tuo amico. A seconda dello scenario, si potrebbe essere meglio degli altri. Ma anche tenere a mente, se si esegue Apache Tomcat – si dispone di due sistemi di difendere, non uno.
    • Add-ons. In aggiunta CGI, perl, PHP è molto naturale per Apache. È più lento e più di un kludge per Tomcat. Apache ha anche centinaia di moduli che possono essere collegati a volontà. Tomcat può avere questa capacità, ma il codice non è stato ancora scritto.
    • Decoratori! Con Apache davanti Tomcat, è possibile eseguire un numero qualsiasi di decoratori che Tomcat non supporta o non ha l’immediato supporto di codice. Per esempio, mod_headers, mod_rewrite, e mod_alias potrebbe essere scritto per Tomcat, ma perché reinventare la ruota quando Apache ha fatto così bene?
    • Velocità. Apache è il più veloce a contenuto statico di Tomcat. Ma se non si ha un alto traffico del sito, a questo punto è inutile. Ma in alcuni scenari, tomcat può essere più veloce di apache. Questo benchmark TUO sito.
    • Socket, di trattamento/stabilità del sistema. Apache ha una migliore presa di gestione rispetto alle condizioni di errore di Tomcat. Il motivo principale è Tomcat deve eseguire tutte le presa per la gestione tramite la JVM che deve essere cross-platform. Il problema è presa l’ottimizzazione è una piattaforma specifica prova. La maggior parte del tempo il codice java è bene, ma quando si sono bombardati con connessioni interrotte, pacchetti non validi, non validi richieste da IP non valido, Apache un lavoro migliore a cadere le condizioni di errore di JVM programma. (YMMV)
    Molto bello marketing per apache. Ma io sono legato a tomcat… politica aziendale 🙂
    La politica dell’azienda nega soluzioni a problemi evidenti? Che significa che non sono anche permesso di benchmark apache come frontend, contenuto statico? Wow.
    Spero che tu non classificare come marketing (non ho alcuna stock investito su Apache), credo che questo tipo di distribuzione (Apache come frontend) è un comune di configurazione e considerato come una delle migliori prassi
    Abbiamo il 99% di contenuti dinamici. “Con la performance di Tomcat 5 e 6, per motivi di prestazioni diventano più difficili da giustificare.” Vogliamo rimanere con tomcat… voglio solo ottimizzare le configurazioni…

    OriginaleL’autore Yonatan Maman

  2. 1

    Puoi ottimizzare utilizzando JMeter. Penso che molto dipende dalle specifiche hardware setup.
    Un modo possibile per scalare il vostro sito è quello di aggiungere le macchine. Controllare il Velocità Conferenza
    e il Alta Scalabilità sito.

    Sì, lo so che posso scala con più macchine. Ma prima voglio ottenere il massimo dall’hardware che è già in uso.

    OriginaleL’autore Yuval F

  3. 1

    Mi piacerebbe anche guardare in sintonia sottostante JVM, non solo tomcat – check-out questa domanda per alcuni buoni consigli, in particolare attorno raccolta dei rifiuti e di allocazione di memoria. Nella mia esperienza, la JVM tuning è molto più efficace rispetto all’ottimizzazione Tomcat interne.

    Grazie per la tua risposta. Ma questo non è un problema. GC è molto ottimizzato.

    OriginaleL’autore Tim Howland

Lascia un commento