Identifying "Writing" connections in status stub

Vlad K. nginx-ml at
Sun Jul 30 10:12:53 UTC 2017

On 2017-07-30 11:26, Peter Booth wrote:
> I just reread the thread and realize that you answered q2, and that
> makes the graph even more
> surprising. You say that it son FreeBSD - does this mean that you
> don’t have /proc available to you?
> Is there a procstat or other way to see the equivalent of
> /proc/<pid>/fd - a list of all open file descriptions for a specific
> pid?

procfs is technically available but I'm not enabling it. We do have 
sockstat and fstat though that basically can show the same. I have 
checked and I don't see any corresponding open connections, that's why I 
was wondering about how to list what nginx thinks are connections being 
Written to, so I could find what those connections did last in the 
access log.

I ran a periodic netstat, sorted the IPs (not removing src ports), and 
ran a diff from previous run, keeping only those that aren't +/-. Over 
some period of time, the only connections that stayed open for long were 
actively using the roundcube webmail which (especially with our 
keepalive and http2 enabled) runs a request every minute. But the number 
of those did not correspond to the number reported as Writing. Plus 
these connections have daily highs and downs. "Writing" in the nginx 
status does not correlate with the rest.

> 1. When is the last time that your production nginx was restarted?

In my first post in this thread is a link to the graph (by Munin) where 
it shows a dip in Writing, that's where I restarted. Reloading doesn't 
change the number of Writing reported by nginx.

> 2. Do you have regular restarts?

No, just regular reloads.

> 3. Is there an obstacle to restarting at some point?

If you're asking me if I can restart nginx to check something, I can do 

> 4. Is this a single instance or do you have multiple nginx hosts?

Single instance, one master and one worker thread, in a jail, and 
there's no other jail running nginx on the server.

> 5. What 3rd party models are you using?

These are the options/modules ENABLED for the port:

      DSO=on: Enable dynamic modules support
      FILE_AIO=on: Enable file aio
      HTTP=on: Enable HTTP module
      HTTPV2=on: Enable HTTP/2 protocol support (SSL req.)
      HTTP_ADDITION=on: Enable http_addition module
      HTTP_AUTH_REQ=on: Enable http_auth_request module
      HTTP_CACHE=on: Enable http_cache module
      HTTP_DAV=on: Enable http_webdav module
      HTTP_FLV=on: Enable http_flv module
      HTTP_GUNZIP_FILTER=on: Enable http_gunzip_filter module
      HTTP_GZIP_STATIC=on: Enable http_gzip_static module
      HTTP_MP4=on: Enable http_mp4 module
      HTTP_RANDOM_INDEX=on: Enable http_random_index module
      HTTP_REALIP=on: Enable http_realip module
      HTTP_REWRITE=on: Enable http_rewrite module
      HTTP_SECURE_LINK=on: Enable http_secure_link module
      HTTP_SLICE=on: Enable http_slice module
      HTTP_SSL=on: Enable http_ssl module
      HTTP_STATUS=on: Enable http_stub_status module
      HTTP_SUB=on: Enable http_sub module
      IPV6=on: Enable IPv6 support
      MAIL=on: Enable IMAP4/POP3/SMTP proxy module
      MAIL_IMAP=on: Enable IMAP4 proxy module
      MAIL_POP3=on: Enable POP3 proxy module
      MAIL_SMTP=on: Enable SMTP proxy module
      MAIL_SSL=on: Enable mail_ssl module
      STREAM=on: Enable stream module
      STREAM_SSL=on: Enable stream_ssl module (SSL req.)
      STREAM_SSL_PREREAD=on: Enable stream_ssl_preread module (SSL req.)
      THREADS=on: Enable threads support
      WWW=on: Enable html sample files

Which is all default for the port, except I also enabled MAIL_* ones as 
I'll be needing some mail proxying. But at the moment I have no mail {} 
blocks defined. Looking at these I guess I could trim down defaults. Who 
needs FLV nowadays :)

I'm not sure which are or aren't 3rd party, but if the descriptions are 
fully correct, then it looks like I'm not using any "3rd party" ones, 
because we have options that explicitly state when a module id "3rd 
party" (and the part I'm not sure is if all are listed as such).

However, it's also compiled with DSO=on, and with the above options, it 
produces these:


None of which I've loaded at the moment.

> 6. Is the website in question an enterprise app or something that is 
> internet visible?

The nginx jail is serving numerous PHP sites and a Python web app, each 
in their own jails. Using fastcgi for php-fpm and uwsgi for python, all 
over tcp connections between jails.

Vlad K.

More information about the nginx mailing list