I would like to announce the immediate availability of my new plugin, Multisite Administration Tools. The idea behind this plugin was to give multisite administrators an easier way to keep tabs on what plugins sites have enabled, or from the other angle which sites have a certain plugin or theme enabled. The plugin is written to be run from the standard plugins folder, and requires network activation. Enjoy!
This season, after a few games we decided to make a “theme” meal based on the opposing teams city of origin. Below is the list we came up with – some cities were easier than others. So if you’re wondering what to make for the next big game, take a look at the list below!
@ Atlanta Falcons
October 9th, 2011 at 7:20 PM
Country Fried Steak w/Biscuits and Gravy
St. Louis Rams
October 16th, 2011 at 12:00 PM
St Louis Toasted Ravioli
@ Minnesota Vikings
October 23rd, 2011 at 3:15 PM
@ San Diego Chargers
November 6th, 2011 at 3:15 PM
November 14th, 2011 at 7:30 PM (Monday Night)
Tampa Bay Buccaneers
November 20th, 2011 at 12:00 PM
@ Detroit Lions
November 24th, 2011 at 11:30 AM (Thanksgiving)
Turkey – what did you expect?
@ New York Giants
December 4th, 2011 at 3:15 PM
New York Strip Steak
December 11th, 2011 at 3:15 PM
Chicken Sandwich w/dirty rice
@ Kansas City Chiefs
December 18th, 2011 at 12:00 PM
BBQ Anything (Haven’t decided yet)
December 25th, 2011 at 7:20 PM (Christmas)
Italian Beef Sandwich
January 1st, 2012 at 12:00 PM (New Years Day)
Of course, we will be putting our own spin on any of the above linked recipes. Hopefully we’ll also develop our own and post them on the GrillinGeeks recipe site!
How do you run a site that gets roughly 3 million daily hits, while not killing server performance? Well, the first step is to get ride of Apache – far too resource intensive to handle the load. Lighttpd is a light weight webserver designed to do just this! I recently spent some time performance tuning the site, and wanted to share the config tweaks here in the event that it may help someone else.
The server we are running is Debian Lenny 64bit box, hosted by SoftLayer. Before I even got to tuning Lighty, I was getting synflood errors. I dug into it and discovered the hosting provider had put some checks in place to help prevent DoS attacks. In “/etc/sysctl.conf” I change the following:
net.ipv4.tcp_syncookies=0 net.ipv4.tcp_synack_retries = 5
Now that I solved that problem – the next thing I went to do was make sure there would not be a restriction on the number of file handlers that the web process could use. To set this up, I added the following in “/etc/security/limits.conf“:
www-data soft nofile 4096 www-data hard nofile 10240
This will allow the lighttpd user (www-data) to have a soft limit of 4096 handlers, with a hard limit of 10240.
In order for this file to work, you have to enabled it in PAM. In “/etc/pam.d/su“, find and uncomment the following line:
session required pam_limits.so
There are two main config files that we need to work with – the first is the main config “/etc/lighttpd/lighttpd.conf” which does not have alot of changes. The following were added to tune performance:
server.max-fds = 40000 server.max-keep-alive-requests = 100 server.max-keep-alive-idle = 2 server.max-connections = 10000
I also enabled the “compress” and “expire” modules. The compress module is using the default settings:
Now, in order to take advantage of this, you need to enable compression in php. Since this is using the cgi build of php, the file to change is “/etc/php5/cgi/php.ini“. There is only one option to change here:
zlib.output_compression = on
In PHP, I also enabled APC for opcode caching. I currently have this running with the following settings:
The expires module is currently configure as follows:
expire.url = ( "/" => "access 6 hours")
The second lighttpd config file that needs to be changed is the fastcgi config “/etc/lighttpd/conf-enabled/10-fastcgi.conf“:
fastcgi.server = ( ".php" => (( "bin-path" => "/usr/bin/php-cgi", "socket" => "/tmp/php.socket", "max-procs" => 4, "idle-timeout" => 20, "bin-environment" => ( "PHP_FCGI_CHILDREN" => "16", "PHP_FCGI_MAX_REQUESTS" => "10000" ), "bin-copy-environment" => ( "PATH", "SHELL", "USER" ), "broken-scriptfilename" => "enable" )) )
Well, that about does it. Hopefully the above notes and insight help others out! I could not have done this without the help of the Lighttpd community – they are great and always willing to help!
I have setup a new site dedicated for the Post Expirator plugin. Please direct any future comments/feedback to the new site. Thanks!
The site is located at: http://postexpirator.tuxdocs.net
The latest version of the Post Expirator plugin is now available! I have fixed the compatibility issues with WordPress (still works on WordPress MU), added the ability to expire posts/pages on the minute and fixed the timezone issue to pull from the timezone configured for WordPress. I have also done some initial testing on the 3.0 alpha trunk – and everything works as advertised!
The plugin can be downloaded at the WordPress Plugins Page. Enjoy!