Software performance investigation vs throwing more hardware

News via Patrick Pierson‘s blog

I found this link on reddit under /r/sysadmin. Josh Hartmann has a customer that had slowness issues with a database server. Josh contacted the developer and every time the developer’s response was to add more hardware to the problem. After some investigation he found a few issues with the developer’s setup of the server, fixed it and now his customer is happier then ever. Here is his write up, great stuff.

 

Testing the Firebird 3 protocol enhancements

In the 9th Firebird Developers Day, we collected donations to sponsor the enhancements of the Firebird wire protocol, to optimize the speed of communication in high latency networks (aka. internet). Dmitry Yemanov implemented the optimizations that were finally available for public testing with the release of the Firebird 3 Beta 1, a few days ago.

So, I decided to test the improvements. I set up a Windows remote server running FB 2.5 and 3.0 (beta1 and beta2), and used a database with a single “customers” table containing real life data (7,000 records and 61 fields). For the tests, I also created a second table with the same data, but in this one, the fields containing nulls were filled with random chars and numbers up to its size limit.

The test itself is very simple: retrieve all the fields from the first 5,000 rows from the tables, using isql (directing ther output to disk, since stdout is too “slow” and affects the results in a bad way), and check the time taken to do the fetchall. Each test was run at last twice (in sequence, filling the cache, etc), and the lowest value obtained was used for the comparison.

You can see the results below, and it is very promising! Thanks Dmitry and also Alex Peshkov (who implemented the zlib compression).

PS: There is one weird case where FB 3 was slower than FB 2.5. I already reported this do Dmitry, and he is investigating.

A full article (in portuguese) about the tests is available at FireBase. Thanks for Fernando Pimenta who “donated” the remote server for my use.

Protocol Graph

Update: Dmitry just sent me more information about the case where FB 2.5 got better performance than FB 3:

Actually, the problem is in the default batch size, not the new code itself. With all fields filled up to their max length, the protocol message size is quite similar between v2.5 and v3, the difference is less than 5%. But v3 always sends 8 packets at once while v2.5 may send 8 to 16 packets at once, depending on the message size. In your particular case, the batch size should be ~12-13 packets. This explains better performance of v2.5.

I need to find a way to adapt the new batching algorithm to better match the old one in such border cases.

Update 2 (21-jan-15): In a recent email exchange, Dmitry told me that he was able to fix the “problem” causing FB 2.5 to have better performance in that specific single case.

Firebird Security Updates for v2.1 and v2.5 series

The Firebird project has released Security Updates for the currently maintained 2.1.x and 2.5.x versions (v2.1.7 and v2.5.3 SU1). These updates fix a recently discovered security vulnerability (CORE-4630) that may be used for a remote DoS attack that could be performed by unauthorised users. We recommend Firebird users to upgrade as soon as is practical.

http://www.firebirdsql.org/en/news/security-updates-for-v2-1-and-v2-5-series-66011/

Firebird 3 Beta 1 released

Firebird Project announces the first Beta release of Firebird 3.0, the next major version of the Firebird relational database, which is now available for testing.

This Beta release demonstrates the features and improvements currently under development by the Firebird development team. Our users are appreciated giving it a try and providing feedback here. Apparent bugs can be reported directly to the bugtracker.

Beta releases are not encouraged for production usage or any other goals that require a stable system. They are, however, recommended for those users who want to help in identifying issues and bottlenecks thus allowing to progress faster through the Beta/RC stages towards the final release.

Please read the Release Notes carefully before installing and testing this Beta release.
Download page:
http://www.firebirdsql.org/en/firebird-3-0-0-beta1/

Release Notes:
http://web.firebirdsql.org/download/prerelease/rlsnotes/Firebird-3.0.0_Beta1-ReleaseNotes.pdf


Dmitry Yemanov

1 2