GreenSQLOpenSource Performance Test
GreenSQLOpenSource is becoming a popular product. We have received a number of inquiries from our users asking about the database firewall performance. In addition, in the new version, we have incorporated numerous optimization patches. In order to get a feel of the gap, we decided to conduct several performance tests and publish their results.
As you probably know, GreenSQLOpenSource works as an SQL proxy. As a result, the system adds additional layer to your existing application infrastructure. In addition, from the network point of view, GreenSQLOpenSource db firewall creates another network socket when connecting to the genuine MySQL server. All this adds some overhead.
We have tested the system using the speedy configuration. Application logs were disabled. In addition, we have build a list of allowed SQL patterns so the system was running in the firewall mode. As a a result, no risk calculation were performed during our test. For maximal performance we recommend you to do the same.
So, here are the results. We tested web application, that makes heavy usage of database (82 SQL requests per page request), we get to performance decrease of 2-12 % (depends on the number of concurrent requests). For most of the sites, when GreenSQLOpenSource is in use, you will feel almost no changes. For high load website, web application speed will be decreased slightly.
reenSQL-0.9.4 Performance Test" title="GreenSQL-0.9.4 Performance Test" class="image image-preview " width="640" height="314" />
At the above chart you can see number of requests executed with and without GreenSQLOpenSource.
Performance test details
In our test lab we installed joomla website together with a number of popular plugins. During the test we perform measurement of the response time of the website's home page. When homepage is accessed, 82 SQL queries are executed. We use ab or Apache Bench tool to measure response time of the web site and number of requests executed per second.
It was executed like this:
ab -n 400 -c 10 hxxp://test-website.com/
- -c specifies number of concurrent requests
- -n specifies total number of requests to perform
In our test we executed 400 requests playing with the -c argument (number of concurrent requests).
For maximum performance we recommend you to enable learning mode and study all allowed queries. In addition, you need to disable logs. For more infor please check here. You can do it by setting loglevel value to 0 in GreenSQLOpenSource configuration file /etc/greensql/greensql.conf.