Letsgetdugg

Random tech jargon

Browsing the tag performance

Since Varnish did not work out on Solaris yet again. I have decided to bite the bullet and write a headers normalization patch for Squid 2.7. This patch should produce much better cache hit rates with Squid. Efficiency++ What the patch does: 1. Removes Cache-Control request headers, don’t let clients by-pass cache if it is […]

Clearing stale cache by domain You can clear a site’s cache by domain, this is really nifty if you have Varnish in front of multiple sites. You can log into Varnish’s administration console via telnet and execute the following purge command to wipe out the undesired cache. purge req.http.host ~ letsgetdugg.com Monitor Response codes Worried […]

Tagged with , ,

Update 2010-02-19: Seems other people are also affected by the Varnish LINGER crash on OpenSolaris. This does not address the core problem but removes the “fail fast” behavior with no negative side effects. r4576 has been running reliably with the fix below. In varnishd/bin/cache_acceptor.c if (need_linger) setsockopt(sp->fd, SOL_SOCKET, SO_LINGER, &linger, sizeof linger); Remove TCP_assert line […]

Tagged with , ,

Once again I have been blind sided by yet another conservative out-of-the-box setting. IPFilter is tuned way too conservative with it’s state table size. Here is how you can tell if your hitting any issues, run ipfstat and check for lost packets. victori@opensolaris:~# ipfstat | grep lost fragment state(in): kept 0 lost 0 not fragmented […]

I am in the process of evaluating which option to choose for a new production deployment of a Sinatra application. Pros and Cons of the implementations: JRuby Stack: Pros: • Fast for serial execution once warmed up. • Multi-threaded, easy to scale with spiked traffic / shared resources. Cons: • Slow warm up time, app […]

Tagged with , , ,

One of our articles on fabulously40 went viral on the tagged.com which is one of the largest social networks in the alexa top 100. The viral aspect was quite apparent when the bandwidth sky rocketed to 30Mb/sec of sustained traffic. We were pushing over 60gigs of image data per day! We broke our bandwidth quota […]

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 ,

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 ,