Random tech jargon

Browsing the topic administration

I have finally nailed out all our issues surrounding Varnish on Solaris, thanks to the help of sky from #varnish. Apparently Varnish uses a wrapper around connect() to drop stale connections to avoid thread pileups if the back-end ever dies. Setting connect_timeout to 0 will force Varnish to use connect() directly. This should eliminate all […]

Update: Just an update, All the issues with Varnish on Solaris have been fixed with the 2.1.4 release. We have been using Varnish on our Solaris production servers since the release with great stability and performance. A big thanks to the Varnish devs and slink for the eventport fixes. I have dumped varnish as our […]

Tagged with , , ,

This is a late night post, so I am just going to make it short. This patch lets you use QueuedThreadPool with the Grizzly Connector. This is a monkey patch, getMaxThreads() should be moved up into the Thread Interface. — GrizzlyConnection-old.java Sat May 2 01:08:02 2009 +++ GrizzlyConnector.java Sat May 2 00:56:37 2009 @@ -51,6 […]

Tagged with , ,

There seems to be some interest Catalyst vs Rails vs Django benchmark. The older benchmark is quite old, it was done in 2007. A lot has changed since then. I am re-running the numbers once again to see what has changed. This time around the hardware is faster and the benchmark is slightly more simple. […]

Tagged with , , , ,

I have recently blogged about swapping malloc implementations for the JVM to help boost multi-threaded performance. Well there is yet another malloc implementation that solaris comes with that is optimized for single threaded performance; bsdmalloc. I just recently switched our perl interpreter to use bsdmalloc and got 33% faster performance with our perlbal proxy. You […]

Tagged with ,

For those interested in how we run Fabulously40. 1. Single server, OpenSolaris / 8Gigs RAM / Quad Xeon x5355 / 100Mbit line. 2. Static and dynamic data cached up front on varnish 3. Even though Nginx can handle L7 load balancing, Perlbal offers better flexibility with its plugin system 4. Jetty application servers easily scale […]

Apparently Solaris comes with some crummy settings for web hosting. Here are the settings I have used to improve our web performance at our service. victori@fab40:/etc/rc2.d# netstat -sP tcp | grep -i drop tcpTimRetransDrop = 6029 tcpTimKeepalive = 2467 tcpListenDrop = 27327 tcpListenDropQ0 = 0 tcpHalfOpenDrop = 0 tcpOutSackRetrans = 99988 If tcpListenDrop is above […]

Tagged with , ,

OpenSolaris uses a single-threaded malloc by default for all applications. The JDK that is compiled for Solaris fails to be linked against mtmalloc or the newer umem malloc implementation that is multithread optimized. In a multithreaded application using a single threaded malloc can degrade performance. As memory is being allocated concurrently in multiple threads, all the […]

I am not exactly sure why this isn’t documented but nginx as of 0.7.x supports event ports This is a huge performance win for Solaris. Nginx can avoid the 0(n) file descriptor problem with event ports support. To enable event ports add this to your nginx.conf events { use eventport; } Here is our performance-proven […]

Tagged with ,

Our logs at fabulously40 grow quite large each day. I needed away to rotate our nginx logs so it does not grow uncontrollably. Here is the recipe sh# logadm -w /opt/extra/nginx/logs/fab40.access.log -s 100m -a 'kill -USR1 `cat /opt/extra/nginx/logs/nginx.pid`' # check /etc/logadm.conf sh# cat /etc/logadm.conf # if you wish to test it out right away, run […]

Tagged with