<div dir="ltr">Thanks Maxim, that's what I needed to know.<div><br><div>How common would you say it is to use accept filters / deferred accept on nginx in production?</div><div><br></div><div>Also to be perfectly certain: <a href="http://nginx.org/en/docs/http/ngx_http_status_module.html#data">connections.idle</a> in Plus is the same as <a href="http://nginx.org/en/docs/http/ngx_http_stub_status_module.html#data">Waiting</a> in Open, right?</div></div><div><br></div><div>Is "Active" on the <a href="http://demo.nginx.com/status.html">status demo</a> = read+write?</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Feb 19, 2015 at 8:02 AM, Maxim Dounin <span dir="ltr"><<a href="mailto:mdounin@mdounin.ru" target="_blank">mdounin@mdounin.ru</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hello!<br>
<span class=""><br>
On Wed, Feb 18, 2015 at 09:25:01PM -0500, K Young wrote:<br>
<br>
> Hello, I've been reading through nginx source to understand the metrics<br>
</span>> <<a href="http://nginx.org/en/docs/http/ngx_http_stub_status_module.html" target="_blank">http://nginx.org/en/docs/http/ngx_http_stub_status_module.html</a>> that are<br>
<span class="">> reported. I've got an idea of what is happening, but since the flow is<br>
> asynchronous, I'm not 100% confident, and would love your feedback.<br>
><br>
> Is the following correct?<br>
><br>
</span>>    - 'accepts' is incremented when a worker gets a new request for a<br>
>    connection from the OS<br>
>    - 'handled' is incremented when a worker gets a new connection for a<br>
<span class="">>    request<br>
><br>
><br>
> And then once a connection is opened:<br>
><br>
</span>>    - 'active' is incremented (actually, it is incremented right before<br>
<span class="">>    'handled', but will be decremented if the worker doesn't handle the<br>
>    connection request).<br>
</span>>    - then the connection briefly goes into a waiting state while the<br>
<span class="">>    request is waiting to be processed<br>
</span>>    - then the connection goes into a short reading state while request<br>
<span class="">>    headers are read. Simultaneously, 'request' is incremented every time a new<br>
>    request header begins to be read.<br>
</span>>    - then the connection goes into a writing state while all work is done<br>
<span class="">>    by nginx and by upstream components<br>
</span>>    - then if the connection will be kept alive, it goes back into waiting<br>
<span class="">>    state, which is synonymous with 'idle'<br>
</span>>    - finally when the connection is closed, active is decremented<br>
<span class="">><br>
> The things I'm least certain of about the 'waiting' state:<br>
><br>
</span>>    - Does active always sum up to waiting+reading+writing?<br>
<br>
Generally yes.  There are nuances with SPDY where additional<br>
connections are emulated for SPDY streams being handled, and<br>
waiting+reading+writing may be bigger than active.<br>
<br>
>    - Does each new connection enter a waiting state just before it goes<br>
>    into the reading state?<br>
<br>
No.  If there are data available right after connect (this usually<br>
happens with accept filters / deferred accept), nginx will not<br>
mark a newly accepted connection as waiting, and will start<br>
reading a request directly.<br>
<br>
>    - While waiting for upstream responses, is the connection in writing<br>
>    state or waiting state?<br>
<br>
Writing.<br>
<br>
>    - While waiting for new client requests on an open connection, is the<br>
<span class="">>    connection in a waiting state?<br>
<br>
</span>Yes.<br>
<span class=""><br>
> Is the attached sketch of the above connection states correct? (underneath<br>
> "READ" it says "request++" to indicate that this is where the request<br>
> counter gets incremented).<br>
> [image: Inline image 1]<br>
<br>
</span>Mostly, see above.<br>
<span class="HOEnZb"><font color="#888888"><br>
--<br>
Maxim Dounin<br>
<a href="http://nginx.org/" target="_blank">http://nginx.org/</a><br>
<br>
_______________________________________________<br>
nginx mailing list<br>
<a href="mailto:nginx@nginx.org">nginx@nginx.org</a><br>
<a href="http://mailman.nginx.org/mailman/listinfo/nginx" target="_blank">http://mailman.nginx.org/mailman/listinfo/nginx</a><br>
</font></span></blockquote></div><br></div>