Eventuali duplicati:
'ab' program freezes after lots of requests, why?Perché un semplice server Thin smette di rispondere a 16500 richieste durante l'analisi comparativa?
Ecco un semplice server di prova:
require 'rubygems'
require 'rack'
require 'thin'
class HelloWorld
def call(env)
[200, {"Content-Type" => "text/plain"}, "OK"]
end
end
Rack::Handler::Thin.run HelloWorld.new, :Port => 9294
#I've tried with these added too, 'rack.multithread' => true, 'rack.multiprocess' => true
Ecco una corsa di prova:
$ ab -n 20000 http://0.0.0.0:9294/sdf
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking 0.0.0.0 (be patient)
Completed 2000 requests
Completed 4000 requests
Completed 6000 requests
Completed 8000 requests
Completed 10000 requests
Completed 12000 requests
Completed 14000 requests
Completed 16000 requests
apr_poll: The timeout specified has expired (70007)
Total of 16347 requests completed
Si rompe intorno al 16500. Perché? Come posso scoprire cosa sta succedendo. È GC in ruby o è qualcosa con il numero di socket di rete disponibili su una macchina OS X. Ho una memoria MPB 2.5 Ghz 6G.
Modifica
Dopo qualche discussione qui e testando varie cose, sembra come cambiare net.inet.tcp.msl da 15000 a 1000 ms rende il problema di verificare server web ad alta frequenza con ab andare via.
sudo sysctl -w net.inet.tcp.msl=1000 # this is only good for local development
Vedere la domanda di riferimento con la risposta a questo problema. 'ab' program freezes after lots of requests, why?
Hai trovato la ragione ?? Una possibile spiegazione potrebbe essere che il sistema operativo mantiene un socket in uno stato "usato di recente" e non lo riutilizza per alcuni minuti. Apparentemente si può riconfigurare il livello IP del SO per non farlo. – radiospiel
Se aiuta, posso riprodurre questo comportamento esatto sul mio MBP. 16359 richieste completate. Non ho idea di cosa lo causi. –
Hmm, pensando ad alta voce, questo numero è sospettosamente vicino a 16384 ... –