Tempo di risposta lungo dal server

Abbiamo un sito web di traffico elevato, al massimo ha 1000 utenti concorrenti e al minimo ha 100 utenti allo stesso tempo. In media ha 40,000 a 100,000 visite al giorno. Il problema a volte è caricato molto lento (abbiamo chiamato questa volta come tempo di disastro :)), In in quel momento quando cerchiamo di caricare il sito con Firefox , mostra l' waiting... (ho provato con molti fornitori in tutto il mondo)

Monitoremo il server a tempi di disastro , CPU load , Memory Usage sono normali. Anche il registro di query lento di MySQL non richiede alcuna query fino a 1 sec . Apache non ha errori. iotop non mostra nulla che provoca questo disastro.

È molto interessante che i tempi di disastro e di picco non abbiano rapporti. A volte il disastro accade a 300 utenti concorrenti e un'altra volta diverso. Non riesco a trovare alcuna relazione tra loro.

Come posso tracciare i pacchetti a tempo di disastro? Voglio sapere che questo disastro è il nostro fault di Data Center (come ad esempio a monte o firewall) o il nostro errore del server (come la configuration di Apache , l'applicazione web o qualsiasi altra cosa che non so).

Per ulteriori informazioni basta aggiungere un commento, quindi modificare la mia domanda per fornire i dati necessari per rispondere.

  • Le richieste nello stato "SendResponse" di IIS sono rimaste bloccate da molto tempo; Applicazione web lenta di IIS 7.5 / ASP.NET 4.0
  • Come posso stabilire se un tempo di risposta medio di 566 ms è un bene per il mio server?
  • Le performance Linux / Apache molto lente anche su networking locale
  • Tempo massimo di risposta ping?
  • Intestazione del tempo di elaborazione di richiesta di Nginx?
  • Tempi di attesa lunghi prima della risposta del server Apache 2.2 (Gentoo LAMP)
  • 2 Solutions collect form web for “Tempo di risposta lungo dal server”

    Il numero di utenti / visite concorrenti non ha nulla a che vedere con la capacità / performance del sistema – si tratta solo di connessioni simultanee e di quelle richieste.

    L'aggiunta di tempi di risposta alle richieste al tuo log del server potrebbe essere un inizio – se questi non riflettono il problema, allora il problema è probabile sulla networking. Vedo che non fai riferimento ai tuoi log del server web nella tua domanda: li hai controllati?

    Si considera che si dispone di elevati volumi di traffico e la tua domanda implica che si dispone solo di un singolo server. Perché? (più server potrebbero aggiungere complicazioni a questa specifica, come la distribuzione del carico, ma anche semplificerebbe gran parte della diagnostica, tuttavia è un programma senza fili per la prestazione e l'accessibilità).

    Il monitoraggio del numero di connessioni e del loro stato fornisce anche dati essenziali per la diagnosi del problema.

    Come posso tracciare i pacchetti a tempo di disastro?

    Con un programma di acquisizione di pacchetti – questo può essere eseguito ovunque dal client al server. Io uso il wireshark (disponibile su Linux, MSWindows e altri)

    Sarebbe stato utile se avevi indicato quale versione / MPM il tuo server sta utilizzando e quale OS in esecuzione.

    Se si utilizza Linux, è ansible utilizzare tcpdump , ad esempio:

     $ tcpdump dst port 80 

    Ma non credo che questo aiuterà molto. Cercherò di eliminare il maggior numero di variables ansible. Il mio primo pensiero è che potrebbe essere un problema di networking.

    Prova a creare un registro Apache con i tempi di risposta, come segue:

     LogFormat "\"%{%Y-%m-%d %H:%M:%S}t\" %V %m \"%U\" \"%q\" %{Content-Type}o %s %B %O %D" responsetime CustomLog "/var/log/apache2/responsetime.log" responsetime 

    Quindi provare a colpire il server web da una macchina / server sullo stesso interruttore.

    Se ciò sembra normale, prova a utilizzare qualcosa come il time wget http://localhost/index.html -q --output-document=/dev/null per farlo sulla stessa casella.

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.