Socket leaks., pread and [crit] SSL_Write() in 1.0.14

Maxim Dounin mdounin at mdounin.ru
Mon Apr 2 11:17:54 UTC 2012


Hello!

On Sat, Mar 31, 2012 at 06:39:37PM -0400, Floren Munteanu wrote:

> Hi Maxim,
> 
> On 3/26/2012 12:47 PM, Maxim Dounin wrote:
> >As already suggested - you may build nginx with any particular
> >openssl version statically, by using --with-openssl= configure
> >argument.
> 
> I followed your advice and built a backlevel RPM for libcripto.so6
> and libssl.so6 so none of the deps are broken in CentOS 5. Then, I
> built the OpenSSL 1.0.1 RPM's and rebuilt Nginx against the latest
> libs:
> # yum list openssl* nginx
> Loaded plugins: fastestmirror
> Loading mirror speeds from cached hostfile
>  * base: mirrors.manchester.icecolo.com
>  * extras: mirrors.manchester.icecolo.com
>  * updates: mirrors.manchester.icecolo.com
> Installed Packages
> nginx.x86_64		1.0.14-1.el5	installed
> openssl.x86_64		1.0.1-1.el5	installed
> openssl-libs.x86_64	1.0.1-1.el5	installed
> openssl098e.x86_64	0.9.8e-1.el5	installed
> 
> # nginx -V
> nginx version: nginx/1.0.14
> built by gcc 4.1.2 20080704 (Red Hat 4.1.2-52)
> TLS SNI support enabled
> configure arguments: --user=nginx --group=nginx
> --prefix=/usr/share/nginx --sbin-path=/usr/sbin/nginx
> --conf-path=/etc/nginx/nginx.conf --pid-path=/var/run/nginx.pid
> --error-log-path=/var/log/nginx/error.log
> --http-log-path=/var/log/nginx/access.log
> --http-client-body-temp-path=/var/lib/nginx/client
> --http-fastcgi-temp-path=/var/lib/nginx/fastcgi
> --http-proxy-temp-path=/var/lib/nginx/proxy
> --http-scgi-temp-path=/var/lib/nginx/scgi
> --http-uwsgi-temp-path=/var/lib/nginx/uwsgi
> --lock-path=/var/lock/subsys/nginx --with-cc-opt='-O3 -g -m64
> -mtune=nocona -m128bit-long-double -mmmx -msse3 -mfpmath=sse'
> --with-file-aio --with-http_addition_module --with-http_dav_module
> --with-http_degradation_module --with-http_flv_module
> --with-http_geoip_module --with-http_gzip_static_module
> --with-http_image_filter_module --with-http_mp4_module
> --with-http_perl_module --with-http_random_index_module
> --with-http_realip_module --with-http_secure_link_module
> --with-http_ssl_module --with-http_stub_status_module
> --with-http_sub_module --with-http_xslt_module --with-mail
> --with-mail_ssl_module --with-poll_module --with-rtsig_module
> --with-select_module

Please also check if nginx actually uses new openssl library, ldd 
should be helpful here.

> 
> http {
> 	...
> 	ssl_prefer_server_ciphers	on;
> 	ssl_ciphers			RC4:HIGH:!aNULL:!MD5;
> 	ssl_protocols			SSLv3 TLSv1 TLSv1.1 TLSv1.2;
> 	ssl_session_cache		shared:SSL:5m;
> 	ssl_session_timeout		10m;
> 	...
> 
> 	server {
> 		listen			192.168.1.3:443 ssl default_server;
> 		server_name		www.domain.com;
> 		access_log		off;
> 		error_log		/var/log/nginx/localhost.error.log      error;
> 		root			/var/www/domain.com;
> 		index			index.php index.html;
> 		ssl_certificate		domain.com.crt;
> 		ssl_certificate_key	domain.com.key;
> 		...
> 	}
> }
> 
> Even if I eliminated the OpenSSL version issues, I still have random
> [crit] SSL_write() failures at the same frequency as before. They
> are also accompanied by open socket alerts, of this format:
> [alert] 2380#0: open socket #34 left in connection 12
> 
> I'm looking forward to your suggestions.

As already suggested, it whould be cool to check if you see the 
same problem in 1.1.x.

And to proceed further we need debug log, see here:

http://wiki.nginx.org/Debugging

Note you'll need to recompile nginx with "--with-debug" configure 
argument to obtain one.

Maxim Dounin



More information about the nginx mailing list