I will try to keep an history of all my previous machine on this page...yes it is just a nerd/geek behavior...
In 15 years...
Instructions per second (IPS) is a measure of a computer's processor speed. Many reported IPS
values have represented "peak" execution rates on artificial instruction sequences with few branches,
whereas realistic workloads consist of a mix of instructions and even applications, some of which take
longer to execute than others. The performance of the memory hierarchy also greatly affects processor
performance, an issue barely considered in MIPS calculations. Because of these problems, researchers
created standardized tests such as SPECint to (maybe) measure the real effective performance in
commonly used applications, and raw IPS has fallen into disuse. [WikiPedia]
This solution is valid if you do not want to carefully optimize your site, and it come for now at huge initial CPU costs till the cache is filled up. The load on my server has proven to be unacceptable (for me) and I was forced to switch it off. But it may work on your server depending on the page size, number of visitors. Authors are working hard and communicating a lot on the official mailing list to reduce that load and improve the code in the coming weeks
mod_pagespeed is the latest addition to our family of products, performing on-the-fly optimization in the Apache™ 2 HTTP Server. It provides webmasters and web developers that manage their Apache 2 configuration with technology that applies Page Speed performance best practices automatically. Webmasters can get the benefits of the optimizations without having to manually going back and fixing the performance issues that Page Speed detects.
If you trust me, you can download the library module libmod_pagespeed.so for Apache 2.2
Check before installing the MD5 keys of this file
# md5sum -b mod_pagespeed.so 187995e3623a222ec5b54c331ee7ffaa *mod_pagespeed.so
If it matches, drop it into your Apache library folder /usr/lib64/apache2/
On my OpenSuSE system, I was forced to install first
zypper in gcc-c++
you should get after a successful build
Install the module library
cp ./out/Release/libmod_pagespeed.so /usr/lib64/apache2/mod_pagespeed.so
After installing mod_pagespeed, it can be customized and configured by editing the Apache configuration file
so you can run
# cp ./out/Release/install/common/pagespeed.conf /etc/apache2/conf.d/pagespeed.conf
Create some directories
# mkdir /var/mod_pagespeed/ # mkdir /var/mod_pagespeed/cache/ # mkdir /var/mod_pagespeed/files
Has to be writtable by apache
chown -R wwwrun:www /var/mod_pagespeed/
and finally restart apache
There is a lot of available settings that are all well explained in this page http://code.google.com/speed/page-speed/docs/using_mod.html
Here is my /etc/apache2/conf.d/pagespeed.conf stripped of all comments as an example:
LoadModule pagespeed_module /usr/lib64/apache2/mod_pagespeed.so
# This page lets you view statistics about the mod_pagespeed module.
Order allow,deny # You may insert other "Allow from" lines to add hosts you want to # allow to look at generated statistics. Another possibility is # to comment out the "Order" and "Allow" options from the config # file, to allow any client that can reach your server to examine # statistics. This might be appropriate in an experimental setup or # if the Apache server is protected by a reverse proxy that will # filter URLs in some fashion. Allow from localhost SetHandler mod_pagespeed_statistics
You may be forced to remove mod_deflate
You can disable mod_pagespeed by adding in the url ?mod_page_speed=0
I found this interesting tool (beside tuning-primer.sh) while trying to optimizing my server setting for Joomla!
mysqlreport makes an easy-to-read report of important MySQL status values. Unlike SHOW STATUS which simply dumps over 100 values to screen in one long list, mysqlreport interprets, formats, and then nicely presents the values in report readable by humans. Numerous example reports are available at the mysqlreport web page.
The benefit of mysqlreport is that it allows you to very quickly see a wide array of performance indicators for your MySQL server which would otherwise need to be calculated by hand from all the various SHOW STATUS values. For example, the Index Read Ratio is an important value but it is not present in SHOW STATUS; it is an inferred value (the ratio of Key_reads to Key_read_requests).
Grab it at http://hackmysql.com/mysqlreport
How to run it (more options), it require PERL to run.
# ./mysqlreport --user xxxxx--password xxxxxx| more
Running mysqlreport against my host, gave the following results:
if you need something more professional and can afford it, you can try Mysql Enterprise (free for 30 days, enough to tune any small server bottleneck)
The Apache POI Project's mission is to create and maintain Java APIs for manipulating various file formats based upon the Office Open XML standards (OOXML) and Microsoft's OLE 2 Compound Document format (OLE2). In short, you can read and write MS Excel files using Java. In addition, you can read and write MS Word and MS PowerPoint files using Java. Apache POI is your Java Excel solution (for Excel 97-2008). We have a complete API for porting other OOXML and OLE2 formats and welcome others to participate.
From the documentation at http://poi.apache.org/utils/logging.html
Logging in POI is used only as a debugging mechanism, not a normal runtime logging system. Logging is ONLY for autopsie type debugging, and should NEVER be enabled on a production system. Enabling logging will reduce performance by at least a factor of 100. If you are not developing POI or trying to debug why POI isn't reading a file correctly, then DO NOT enable logging. You've been warned.
In order to effectively disable the logging functionality in Apache POI you must use an alternative logger. This is accomplished by providing a property to the
POILogFactory to override the default logger. You can add one of these –D to your JVM settings
I found Apache POI to slightly better perform with the NoOpLog of apache common!
You can create a custom build of Apache POI 3.8 and alter the following properties to better match the size of the excel files you are generating or reading:
This will only work if you do not reach xls limitations which may avoid you to go to that extreme solution. XLS is not compressed (XLSX is xml based and compressed) and your workbook may double size in memory as a result!
For example, data beyond 256 (IV) columns by 65,536 rows will not be saved in xls! In Excel 2010 and Excel 2007, the worksheet size is 16,384 columns by 1,048,576 rows, but the worksheet size of Excel 97-2003 is only 256 columns by 65,536 rows. Data in cells outside of this column and row limit is lost in Excel 97-2003. But there is a lot more limitations listed at office.com…
The biggest side effect was that my excel file went from 354kb to 967kb, but the speed increase was quite interesting: more than 44% less evaluation time.
I don’t think these bring a lot of speed, JIT should optimize this bad piece of code for us but it is always worth trying Speeding up org.apache.poi.hssf.usermodel.HSSFRow.compareTo() and http://affy.blogspot.ch/2004/04/poi-optimization-speeding-_108265938673224937.html
YSlow analyzes web pages and tells you why they're slow based on the rules for high performance web sites. YSlow is a Firefox add-on integrated with the popular Firebug web development tool. YSlow gives you:
The Zend Optimizer FAQ answers the question "Why use the Zend Optimizer?" with this statement: "The standard Zend run-time compiler used by PHP is indeed extremely fast, generating code that is usually 2 to 10 times faster. But an application that uses the Zend Optimizer typically executes another 40% to 100% faster."
Read the results of the load test HERE.
According to this MySQL page here, you can win 30 to 50% more performances using MySQL jdbc named pipe!
Named pipes only work when connecting to a MySQL server on the same physical machine as the one the JDBC driver is being used on.
In simple performance tests, it appears that named pipe access is between 30%-50% faster than the standard TCP/IP access.
As default, when you install mySQL on windows using the installer, TCP IP is the default option. The question remains why nobody seems
to use named pipe, or has write any articles on internet about it. Lorenz and me were trying nearly 2 hours to make this damn things work.
We googled on internet, finding nothing, e try and try until we finally succeed. That is the reason why I write this article now.
We were testing successfuly MySQL 5.0 using named pipe, and what an increase in speed! 50% in the case of this big project
First it may be a good idea to use the latest JConnector driver from MySQL
MySQL Connector/J is a native Java driver that converts JDBC (Java Database Connectivity) calls into the network protocol used by
the MySQL database. It lets developers working with the Java programming language easily build programs and applets that interact
with MySQL and connect all corporate data, even in a heterogeneous environment. MySQL Connector/J is a Type IV JDBC driver and
has a complete JDBC feature set that supports the capabilities of MySQL.
Download Binaries & Source
Here is an useful tool for improving performance of your website: The CSS sprite generator takes a number of source images and combines them into a single "sprite" image and supplies CSS to map to each image within the sprite. The technique this tool employs is often used to improve the performance of a web site by reducing the number of HTTP requests that the client's browser needs to make.
CSS sprites are a way to reduce the number of HTTP requests made for image resources referenced by your site. Images are combined into one larger image at defined X and Y coordinates. Having assigned this generated image to relevant page elements the
background-position CSS property can then be used to shift the visible area to the required component image.
This technique can be very effective for improving site performance, particularly in situations where many small images, such as menu icons, are used. The Yahoo! home page, for example, employs the technique for exactly this.
I’ve installed a copy of this tool at:
And took time to:
A compendium of the fastest things the world has to offer, and a celebration of the technological breakthroughs that feed the rush
Both man and machine are approaching the future at an ever-accelerating clip. Almost every year, our vehicles break speed records. This past fall, the X-43A scramjet-powered aircraft reached a speed of nearly Mach 10, beating a record of Mach 6.8 set only six months before. Todayâs fastest supercomputer, IBMâs Blue Gene, is about 450,000 times as speedy as the ruling machine of 30 years ago and twice as fleet as the fastest machine of just one year ago. More at Popular Science
Digging into mySQL settings can be time consuming, like with any other component. Most of the time, and just by changing a few settings, you can expect a performance increase. The problem is to change what, and to which value. This is where tuning-primer.sh help you:
Get this script, http://forge.mysql.com/projects/view.php?id=44 upload it, unzip it, and install it in your /etc folder. Then run it from the command line by entering ./path-to-file/tuning-primer.sh
MySQL Server must run a few days or weeks, or it wont be be safe to follow these recommendations.
To find out more information on how each of these runtime variables effects performance visit:
Here is an example of tuning-primer.sh output
Current long_query_time = 5 sec.
You have 2856 out of 4725688 that take longer than 5 sec. to complete
The slow query log is enabled.
Your long_query_time seems to be fine
Current thread_cache_size = 128
Current threads_cached = 55
Current threads_per_sec = 0
Historic threads_per_sec = 0
Your thread_cache_size is fine
Current max_connections = 100
Current threads_connected = 15
Historic max_used_connections = 55
The number of used connections is 55% of the configured maximum.
Your max_connections variable seems to be fine.
Max Memory Ever Allocated : 305 M
Configured Max Per-thread Buffers : 1017 M
Configured Max Global Buffers : 143 M
Configured Max Memory Limit : 1 G
Total System Memory : 2.99 G
Max memory limit seem to be within acceptable norms
Current MyISAM index space = 4 M
Current key_buffer_size = 5 M
Key cache miss rate is 1 : 3740
Key buffer fill ratio = 35.00 %
Your key_buffer_size seems to be too high.
Perhaps you can use these resources elsewhere
Query cache is enabled
Current query_cache_size = 128 M
Current query_cache_used = 27 M
Current query_cach_limit = 2 M
Current Query cache fill ratio = 21.13 %
Your query_cache_size seems to be too high.
Perhaps you can use these resources elsewhere
MySQL won't cache query results that are larger than query_cache_limit in size
Current sort_buffer_size = 4 M
Current record/read_rnd_buffer_size = 1020 K
Sort buffer seems to be fine
Current join_buffer_size = 1.00 M
You have had 7065 queries where a join could not use an index properly
You should enable "log-queries-not-using-indexes"
Then look for non indexed joins in the slow query log.
If you are unable to optimize your queries you may want to increase your
join_buffer_size to accommodate larger joins in one pass.
Note! This script will still suggest raising the join_buffer_size when
ANY joins not using indexes are found.
Privacy Statement | Copyright Notice | Licenses
© 1999-2012 Waltercedric.com. Designed by Cédric Walter. Sitemap
Reproduction without explicit permission is prohibited. All Rights Reserved. All photos remain copyright © their rightful owners. No copyright infringement is intended.
Disclaimer: The editor(s) reserve the right to edit any comments that are found to be abusive, offensive, contain profanity, serves as spam, is largely self-promotional, or displaying attempts to harbour irrelevant text links for any purpose.