Opened 7 years ago

Closed 3 years ago

#1226 closed defect (fixed)

nginx behaves weirdly when using eventport as event engine on Solaris

Reported by: Eugene Zheganin Owned by:
Priority: minor Milestone:
Component: nginx-core Version: 1.10.x
Keywords: evenport solaris Cc: 4.5.2
uname -a: SunOS hyperion 5.11 11.2 i86pc i386 i86pc
nginx -V: nginx version: nginx/1.11.11
built with OpenSSL 1.0.2g 1 Mar 2016
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --with-http_ssl_module --with-http_realip_module --with-http_xslt_module --with-http_image_filter_module --with-pcre=../pcre-8.39 --with-pcre-jit --with-cc-opt=-I/usr/local/gd2/include --with-threads --with-ld-opt='-m64 -L/usr/local/gd2/lib -L/usr/local/libmaxminddb/lib' --with-http_secure_link_module --with-pcre-opt=-m64 --with-http_v2_module --with-http_stub_status_module --with-poll_module --with-select_module --with-openssl=/home/emz/src/openssl-1.0.2g --add-module=/home/emz/src/nginx-push-stream-module-master --add-module=/usr/local/ruby-2.1.6/lib/ruby/gems/2.1.0/gems/passenger-5.0.6/ext/nginx --add-module=/home/emz/src/nginx_geoip2 --add-module=/home/emz/src/ngx_http_auth_pam_module-1.4 --add-module=/home/emz/src/nginx-module-vts-0.1.14

Description

nginx behaves weirdly when using eventport as event engine. I tried to use eventport on Solaris when I first started using nginx, but the experience was discouraging: nginx behaved weirdly, mostly when entering indefinite timeouts during handling requests. I switched to /dev/poll and since then it worked flawlessly. Some time ago I saw a discussion stating that a work has been done on the eventport better support, so I compiled new 1.11.11 version and decided to give eventport in nginx another chance. Sadly, nothing has changed: nginx still enters idefinite loops when handling requests with eventport. This looks like the web application really waits for something, and the browser just keeps spinning the loader icon. When changed to /dev/poll and restarting nginx everything starts working back. No errors are logged in the logs.

Change History (3)

comment:1 by Maxim Dounin, 7 years ago

Status: newaccepted

Quoting myself:

There are problems with eventport implementation, known for at least several years now, and these can be easily reproduced by running our test suite with 'use eventport' added to test configurations.

Unfortunately, these problems are very low priority due to minor popularity of Solaris. Consider using /dev/poll instead, which is the default, well tested and has no known problems.

comment:2 by Maxim Dounin, 3 years ago

As of nginx 1.19.9, known issues with the eventport implementation in nginx are fixed. Relevant changes: 9ca8fb98ef1c, da0a85e91587, e0844646099b, eb54227110f0, b1302f1dd2f6, 1bf8ab7063de. With these changes, it is now possible to run nginx test suite with use eventport; without errors.

Note that there is a known issue in the event port interface itself (see here, here, and here). It seems to be fixed in Solaris 11.4, but not in previous versions: at least with Solaris 11.3 I'm able to see the issue sporadically when running proxy_cache_use_stale.t, it hangs on exit due to previously lost events on the socketpair used as a channel to deliver control messages from master process to workers. No workarounds are planned for this issue, upgrade to the latest Solaris version might be needed for eventport to work properly.

comment:3 by Maxim Dounin, 3 years ago

Resolution: fixed
Status: acceptedclosed
Note: See TracTickets for help on using tickets.