Letsgetdugg

Random tech jargon

Browsing the 2009 April archive

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 ,

I wrote a quick micro benchmark to test out ruby threads. Apparently ruby can’t make use of multiple CPUs with it’s threading implementation. I guess you have to resort to forking to scale up to multiple cpu cores while using mri ruby. However, there is an alternative solution, just use JRuby. JRuby utilizes all cores […]

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 […]

You might find this plugin nifty if you have multiple application servers processing requests. The Perlbal BackendHeaders plugin appends X-Backend headers with which backend served the request. Update 06/26/09 Now on github perlbal-plugin-backendheaders syris:~ victori$ curl -I http://fabulously40.com/questions HTTP/1.1 200 OK Server: nginx/0.7.52 Content-Type: text/html; charset=utf-8 Expires: Thu, 01 Jan 1970 00:00:00 GMT Content-Language: en […]

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 ,

Well this has been a long time coming but I can declare the Typeface blogging platform to be a dead project. I have migrated this blog to wordpress.

Tagged with ,

Try this fun perl benchmark, to test your dual core, SMP or hyperthreaded system. Before running, make sure you have perl 5.8 with threading support compiled in. Perl has native ithreads as of perl 5.8. #!/usr/bin/perl -w use threads; use strict; my $y1=Bench->new(); print “Bencmarking multi-threadedn”; $y1->benchmark(); print “Benchmarking single-threadedn”; $y1->ncpu(1); $y1->benchmark(); package Bench; sub […]

Tagged with , ,