tag:blogger.com,1999:blog-64863527000742471512024-03-21T10:04:51.190-07:00CALL A DEVELOPER1 (800) 926-6167 (toll-free) | +1 (757) 320-0291 (intl)<br><br>Fix PHP, MySQL, HTML/CSS, Javascript/jQuery Issues...<br>+ Linux Server Administration & Bash/Perl/Pyton Scripting...<br>+ Custom Coding & Development Services...Anonymoushttp://www.blogger.com/profile/04456412733236287665noreply@blogger.comBlogger4125tag:blogger.com,1999:blog-6486352700074247151.post-76176166999252634902013-04-12T20:36:00.002-07:002013-04-12T20:51:03.354-07:00Update: Global Wordpress Attacks Still Going, but Muffled<h3>Status Update: Global Wordpress Attacks</h3>
<p>The <a href="http://calladeveloper.blogspot.com/2013/04/global-wordpress-brute-force-attacks.html" target="_blank">global attacks on Wordpress sites</a> (and now, other sites as well) are still going, although the Wordpress attacks themselves have been significantly mitigated by most web hosts as well as security services like <a href="http://www.cloudflare.com" target="_blank">CloudFlare</a> through a combination of techniques specifically designed to combat this particular and unusually effective attack. </p>
<a name='more'></a>
<p>CloudFlare CEO Matthew Prince said, "the botnet has the power to test as many as 2 billion passwords in an hour"</p>
<p>- <a href="http://thenextweb.com/insider/2013/04/13/brute-force-attacks-on-wordpress-continue-as-cloudflare-fends-off-60m-requests-in-1-hour/">TheNextWeb: Brute force attacks on Wordpress continue...</a></p>
<p>That is a lot of passwords, and unfortunately most people have very easily guessable passwords - like password and 123456.</p>
<p>The first thing you should do is get a better password: </p>
<p><a href="http://abetter.pw" target="_blank">abetter.pw</a> </p>
<p>The above site will generate a password of 29 characters with upper- and lowercase characters, numbers, and special characters. Hint: Drag the link above to your "Bookmarks bar" for one click access to a simple secure password generator.</p>
<p>If you need a place to store this password - download <a href="http://www.keepassx.org/" target="_blank">KeepassX</a> and use the tips in my original article on the <a href="">Wordpress brute-force attacks</a> to make a memorable but still difficult password to unlock your Keepass with. This way you only have to remember one strong password, and you can store a new randomly generated password for each of your accounts - the nice thing about KeepassX is you can also (and should) set the passwords to "expire" after a certain time (set it to 1 month or less right now, especially if your site has been hacked or you found malware on your computer). The program will remind you to change the password but it will not change it for you.</p>
<h3>Please be sure you have followed the guide: <a href="http://calladeveloper.blogspot.com/2013/04/global-wordpress-brute-force-attacks.html">how to respond to the Wordpress attacks</a> if you have any Wordpress sites</h3>
<p><a href="https://plus.google.com/117303725737258749675?rel=author">Peter Stolmar</a> is a Linux Systems Administrator specializing in system security including fixing hacked websites, defending against large scale attacks, and educating users on the importance of "thinking secure".</p>
<p>Need help with securing your site(s), responding to a security incident, or custom Wordpress development? <a href="http://calladeveloper.com">Call A Developer</a> » 1-800-926-6167</p>
Anonymoushttp://www.blogger.com/profile/04456412733236287665noreply@blogger.com24tag:blogger.com,1999:blog-6486352700074247151.post-38526273331361841292013-04-11T18:15:00.001-07:002013-04-13T17:34:53.263-07:00Global Wordpress Brute-force Attacks<h2><b>Your Wordpress site is under attack right now</b></h2>
<p>Right now there is a very severe and global attack on all Wordpress sites on the Internet.</p>
<p>New <a href="http://calladeveloper.blogspot.com/2013/04/update-global-wordpress-attacks-still.html" target="_blank">status update on the Wordpress attacks</a> as of 11pm Eastern time April 12, 2013. </p>
<h3>UPDATE: It seems everyone is advising people to install either Limit Login Attempts or a Wordpress Security Plugin. DO NOT DO THIS. This will not only fail to block the attack, it could crash your server. These attacks come in too fast from too many IP addresses. Please follow this guide instead.</h3>
<p>Update 2: Matt Mullenweg, the creator of Wordpress, has confirmed that plugins should NOT be used in this situation:</p>
<blockquote cite="http://thenextweb.com/insider/2013/04/13/brute-force-attacks-on-wordpress-continue-as-cloudflare-fends-off-60m-requests-in-1-hour/">Most other advice isn’t great — supposedly this botnet has over 90,000 IP addresses, so an IP limiting or login throttling plugin isn’t going to be great</blockquote> - <a href="http://thenextweb.com/insider/2013/04/13/brute-force-attacks-on-wordpress-continue-as-cloudflare-fends-off-60m-requests-in-1-hour/">from TheNextWeb: Brute force attacks on Wordpress continue...</a>
<p>Update 3: They are now providing the correct HTTP_REFERER value, so the htaccess blocking is not always effective.</p>
<p>This is not a joke or a hoax - your site is at risk and may be hacked and sending spam right now.</p>
<h2><a href="http://calladeveloper.blogspot.com/2013/04/global-wordpress-brute-force-attacks.html">What all Wordpress site owners need to do right now on all sites</a></h2>
<a name='more'></a>
<h4>If this is all greek and you don't have a webmaster or developer that can help - call 1-800-926-6167</h4>
<ol>
<li>Immediately change your passwords to the Wordpress admin area, FTP, any control panels, and all email accounts</li>
<li>Your password should be at least 30 characters and MUST have all of: uppercase and lowercase letters, numbers, and special characters. A good way to come up with a strong password that you can still remember is take a long phrase, song lyrics, a poem, similar, and replace certain letters with uppercase, numbers, and special characters.</li>
<li>for example the relatively strong password: th1$l1ttl3p1ggy$3cur3dth31rW0rdpr3$$$1t3 is simply "thislittlepiggysecuredtheirWordpresssite" with i->1, s->$, e=3, and o->0 (zero)</li>
<li>Scan your computer for viruses, keyloggers, rootkits, and botnet software</li>
<li>Do the same scans for any computer that has had access to your site admin area</li>
<li>Update Wordpress and all plugins to the latest versions</li>
</ol>
<h3>Add this to the .htaccess file in your document root (public_html, www, htdocs, etc)</h3>
<p>This is in order to stop direct automated attempts to log in to your site:</p>
<p>NOTE: Replace example.com below with your domain (leave the ?. before it and everything else)</p>
<pre>
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_METHOD} =POST
RewriteCond %{HTTP_REFERER} !^http://(.*)?.example.com [NC]
RewriteCond %{REQUEST_URI} ^/wp-login\.php(.*)$ [OR]
RewriteCond %{REQUEST_URI} ^/wp-admin$
RewriteRule ^(.*)$ - [R=403,L]
</IfModule>
</pre>
<h3>Now you are going to change the admin username to something difficult to guess</h3>
<p>Log into Wordpress admin with your new secure password and follow this guide to change the admin username:</p>
<p><a href="http://www.digitalkonline.com/blog/change-your-wordpress-admin-username/" target="_blank">How to change Wordpress admin username</a></p>
<p>The attackers are simply going through and using a lot of computing power to "guess" the password for the user "admin" - if that user is not there, it will make it no longer worth the computing effort required to guess both the username and password.</p>
<p>Now the most unfortunate part is that these attacks may have actually "hacked" your Wordpress site, meaning you may not know it but someone could be using your account to send spam or even attack other sites.</p>
<p>I recommend having someone familiar with Wordpress look through the site as well as look at the files themselves. If you see anything out of the ordinary on the site like a large amount of spam, certain links redirecting (usually to sites you don't want people going to from your Wordpress blog), or especially files and plugins that are shown in FTP / File Manager (in the wp-content/plugins directory) but are NOT listed in "Plugins", you will need to clean the hacks. </p>
<p>The simplest way to clean up a hack is essentially to "quarantine" the whole site and rebuild, but frequently much of the site can be salvaged.</p>
<p>Basically you will need to download and install the latest version of Wordpress via FTP, copy just the important parts of your wp-config.php from the hacked folder to hook up the database, and re-install clean copies of your theme and plugins. If you are using timthumb in your theme or any plugins, now is a good time to pick a new theme that uses the built-in Wordpress image thumbnails as well as trim down your collection of (potentially vulnerable) plugins.</p>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwC6CRJzIjU27eDOywTB9DGynzT29lC4Rc9Vrg4p7hU_oK8RHNMN_H_rAyQY14xtlq2pkQE6D8Dstav75F_8u3SKrU-PQdLXG9rfjC2Q63GJyAyQUzzFbDU9ArLmMMTCiJNCREyFHcwXI7/s1600/wordpress-attacks-and-hacks.png" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwC6CRJzIjU27eDOywTB9DGynzT29lC4Rc9Vrg4p7hU_oK8RHNMN_H_rAyQY14xtlq2pkQE6D8Dstav75F_8u3SKrU-PQdLXG9rfjC2Q63GJyAyQUzzFbDU9ArLmMMTCiJNCREyFHcwXI7/s320/wordpress-attacks-and-hacks.png" /></a>
<p>How do I know the above is (part of) a Wordpress hack? I know exactly what to look for to find even the most well-disguised hacks, but this one is simple - eval and base64 decode together are almost always bad news.</p>
<p>Now for the plugins to install on all Wordpress installations. Search for these from Plugins->Install or click to download.</p>
<p>If you get stuck on any of this or you think your site is still hacked (or hacked again), get help. If all else fails - <a href="http://calladeveloper.com">Call A Developer</a> @ 1-800-926-6167</p>
<ul>
<li><a href="http://wordpress.org/extend/plugins/stop-spammer-registrations/" target="_blank">Stop Spammer Registrations</a></li>
<li><a href="http://wordpress.org/extend/plugins/limit-login-attempts/" target="_blank">Limit Login Attempts</a></li>
<li><a href="http://wordpress.org/extend/plugins/ban-hammer/" target="_blank">Ban Hammer</a></li>
<li><a href="http://wordpress.org/extend/plugins/wordpress-file-monitor-plus/" target="_blank">Wordpress File Monitor Plus</a></li>
<li><a href="http://wordpress.org/extend/plugins/spam-free-wordpress/" target="_blank">Spam Free Wordpress</a></li>
<li><a href="http://wordpress.org/extend/plugins/w3-total-cache/" target="_blank">W3 Total Cache</a> (if you don't have this or SuperCache already - don't use both)</li>
</ul>
<p>Further Reading</p>
<ul>
<li><a href="http://www.amazon.com/gp/product/B007TTSU0W/ref=as_li_ss_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=B007TTSU0W&linkCode=as2&tag=tweandtun-20">WordPress Security: Protection from Hackers and Crackers</a><img src="http://www.assoc-amazon.com/e/ir?t=tweandtun-20&l=as2&o=1&a=B007TTSU0W" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /></li>
<li><a href="http://codex.wordpress.org/Hardening_WordPress" target="_blank">Official Hardening Wordpress Guide</a></li>
<li><a href="http://smackdown.blogsblogsblogs.com/2008/06/24/how-to-completely-clean-your-hacked-wordpress-installation/" target="_blank">How to clean hacked Wordpress</a></li>
<li><a href="http://wordpress.org/support/topic/advice-rebuilding-a-new-database-after-site-got-hacked" target="_blank">Advice on rebuilding database after a hack</a></li>
<li><a href="http://blog.sucuri.net/2010/02/removing-malware-from-a-wordpress-blog-case-study.html" target="_blank">Removing malware from Wordpress - a Case Study</a> Warning - this one gets technical</li>
<li><a href="http://www.amazon.com/gp/product/B005HTQL4I/ref=as_li_ss_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=B005HTQL4I&linkCode=as2&tag=tweandtun-20">WordPress 3 Ultimate Security</a><img src="http://www.assoc-amazon.com/e/ir?t=tweandtun-20&l=as2&o=1&a=B005HTQL4I" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /></li>
</ul>
<p>Remember if you need help, call <b>1-800-926-6167</b> - on a mobile phone this site will show a green Phone button at the bottom - click it to call us. Be sure to save the number as "Call A Developer"</p>
<p><a href="https://plus.google.com/117303725737258749675?rel=author">Peter Stolmar</a> is a Linux Systems Administrator specializing in system security including fixing hacked websites, defending against large scale attacks, and educating users on the importance of "thinking secure".</p>Anonymoushttp://www.blogger.com/profile/04456412733236287665noreply@blogger.com340tag:blogger.com,1999:blog-6486352700074247151.post-21343852969167923352013-03-28T09:44:00.000-07:002013-03-28T09:52:38.528-07:00HowTo: Read the MySQL Slow Query Log<h3>How to read the MySQL Slow Query Log</h3>
<p>If you followed along with the first post in our MySQL Optimization Series, you learned how to <a href="http://calladeveloper.blogspot.com/2013/03/enabling-slow-query-log-in-mysql.html" title="Enable MySQL Slow Query Log" target="_blank">enable slow query logging on mysql</a> and should have that turned on. (If not go ahead and follow the steps in that article now). Today we're going to take a look at <b>how to read the slow query log</b> and see what we can do with this data.</p>
<a name='more'></a>
<p>Go ahead and tail your slow query log and make sure you have at least one slow query in there. If you don't you can make one:</p>
<pre>root@server# mysql -e 'SELECT SLEEP(8);'</pre>
<p>All the above query will do is "sleep" (do nothing) for 8 seconds. This should be long enough to be logged in your slow query log (I usually recommend logging queries taking longer than 2 or 3 seconds)</p>
<p>First let's check out what a slow query log entry looks like:</p>
<pre>root@server# tail /var/log/slowqueries
# Time: 130320 7:30:26
# User@Host: db_user[db_database] @ localhost []
# Query_time: 4.545309 Lock_time: 0.000069 Rows_sent: 219 Rows_examined: 254
SET timestamp=1363779026;
SELECT option_name, option_value FROM wp_options WHERE autoload = 'yes';
</pre>
<p>Let's go over what each line means:</p>
<ul><li>The first line shows the time the query was logged. The format is YYMMDD H:M:S. We can see the query above was <i>logged</i> at 2013 March 20th at 7:30am - NOTE: This is server time, which may be different from your local time</li>
<li>Next, we'll see the MySQL user, database, and hostname</li>
<li>The third line shows the total query time, the Lock time, the number of Rows "sent" or returned, and the number of rows examined during the query.</li>
<li>Below that you'll see SET timestamp=UNIXTIME; < this is the time the query actually happened. It is good to check that you're not looking at a problem that happened months ago if you're trying to figure out why something is slow right now. I'll explain how to turn that into a usable time below</li>
<li>The final line shows the full query.</li>
</ul>
<p>To get a human-readable timestamp from the Unix Epoch, you can use the date -d command, type date -d @ (including the @ sign) and paste the timestamp from the log immediately after the @ (no space):</p>
<pre>root@server# date -d @1363779026
Wed Mar 20 07:30:26 EDT 2013
</pre>
<p>In this case we can see the query was run and logged at the same time - on an overloaded server that may not always be the case. So remember that the SET timestamp= value is when the actual query was run.</p>
<p>Now I'm going to show you how I solved a real problem on one of my websites using the mysql slow query log. Your query is going to be different, but the information is the same.</p>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJ_qsXCrjLAVmbJEKVfwW4GOVl8dvXymdeuSAwb8_GzHbyuzxW_3GMFpIpXCPLBy9CEjS_dnKaLkI3BhT1Qzx3ux3d0gYA7asDtVYlMgbnoD3ku11x_s_1SrymZr9Jyny1PZGdKm94siBR/s1600/how-to-read-mysql-query-log.png" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJ_qsXCrjLAVmbJEKVfwW4GOVl8dvXymdeuSAwb8_GzHbyuzxW_3GMFpIpXCPLBy9CEjS_dnKaLkI3BhT1Qzx3ux3d0gYA7asDtVYlMgbnoD3ku11x_s_1SrymZr9Jyny1PZGdKm94siBR/s320/how-to-read-mysql-query-log.png" alt="how to read mysql slow query log"/></a>
<p>I am using a plugin called Tweet Blender on a Wordpress blog (different site) to automatically display relevant tweets to my keywords. Unfortunately someone either realized that or just happened to spam Twitter with one of my keywords in the tweet or username - either way, the end result was that I was displaying Twitter spam on my site. Because tweets only stay on there for a short time, this was not something I noticed on the actual site. But when I looked in my slow query log, it was obvious.</p>
<p>I had several very similar queries showing a tweet with spammy text (always the same) and after a while the number of queries caused some of them to run slow. Most people would have likely had their sites suspended or getting errors if this happened because it was a fairly large number of requests, but my server is well tuned for performance, so there was no noticeable effect. Luckily I am logging slow queries so I was able to see this information and quickly determine the issue. </p>
<p>Fixing it was simple - Tweet Blender has awesome filtering features so I just added that Twitter username to my "exclude" list (along with several more spam keywords) and it hasn't been an issue since. It does show how useful it is to monitor your sites and logs, even if it's just a quick check once a week on each site / server.</p>
<p>And that is how you <u>read the slow query log</u> in MySQL. Simple and useful, right?</p>
<p>If you want help <b>making mysql faster</b>, <a href="http://calladeveloper.com" target="_blank">Call A Developer</a>.</p>
<p>Further Reading:</p>
<ul>
<li><a href="http://www.amazon.com/gp/product/B0043D2ERC/ref=as_li_ss_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=B0043D2ERC&linkCode=as2&tag=calladeveloper-20" target="_blank">MySQL in a Nutshell (O'Reilly)</a><img src="http://www.assoc-amazon.com/e/ir?t=calladeveloper-20&l=as2&o=1&a=B0043D2ERC" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /></li>
<li><a href="http://www.mysql.com/" target="_blank">Official MySQL Site</a></li>
<li><a href="http://www.amazon.com/gp/product/B004LRPBCK/ref=as_li_ss_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=B004LRPBCK&linkCode=as2&tag=calladeveloper-20" target="_blank">Learning MySQL</a><img src="http://www.assoc-amazon.com/e/ir?t=calladeveloper-20&l=as2&o=1&a=B004LRPBCK" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /></li>
<li><a href="http://en.wikipedia.org/wiki/MySQL" target="_blank">MySQL Wikipedia</a></li>
<li><a href="http://www.amazon.com/gp/product/1449314287/ref=as_li_ss_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=1449314287&linkCode=as2&tag=calladeveloper-20" target="_blank">High Performance MySQL: Optimization, Backups, and Replication</a><img src="http://www.assoc-amazon.com/e/ir?t=calladeveloper-20&l=as2&o=1&a=1449314287" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /></li>
</ul>
Anonymoushttp://www.blogger.com/profile/04456412733236287665noreply@blogger.com21tag:blogger.com,1999:blog-6486352700074247151.post-17172959952626393962013-03-23T23:21:00.000-07:002013-03-24T13:11:53.155-07:00Enabling the Slow Query Log in MySQL without service restart - Database Optimization Basics<p>This is the first article in a series on MySQL Database Optimization Basics. <a href="http://calladeveloper.blogspot.com/feeds/posts/default?alt=rss" title="Subscribe to Call A Developer">Subscribe</a> to be notified when new articles are added!</p>
<p>Today we're going to cover how to <b>log slow queries in mysql</b> so that you can identify problems and refactor the correct queries in order to improve the performance of your website or application. Slow queries can cause errors when people use your website or application and having them will make your code difficult to scale. The first step toward fixing them is seeing which queries are slow in your code, so let's start by learning how to <b>enable slow query logging</b> without restarting the mysql service:</p>
<a name='more'></a>
<h2>How to enable slow query log in MySQL <i>without restarting mysqld</i></h2>
<p>In MySQL 5.1.12 and later, this is fairly straightforward and can be done without restarting mysql as follows:</p>
<p>*Note: this requires command line access over SSH as root, so it is only applicable to VPS and Dedicated Servers. I am working on a Centos 5 VPS with cPanel, but this will work on most Linux and UNIX versions (paths may be different).</p>
<pre>
root in [~]# touch /var/log/slow
root in [~]# chown mysql:mysql /var/log/slow
root in [~]# mysql -e 'SET GLOBAL slow_query_log=1;'
root in [~]# mysql -e 'SET GLOBAL slow_query_log_file="/var/log/slow";'
root in [~]# mysql -e 'SET GLOBAL long_query_time=2;'
</pre>
<p>If you want to leave slow query logging on (recommended), you will need to add 3 lines to my.cnf under the [mysqld] section:</p>
<pre>
slow_query_log=1
slow_query_log_file=/var/log/slow
long_query_time=2
</pre>
<p>To test if it is working correctly (you should test after changing things, I promise it's a good idea) - simply run a SELECT SLEEP(x) query where x is longer than the long_query_time you have set - the query should be logged to the file you specified for slow_query_log_file (as long as it exists and the mysql user can access it).</p>
<pre># mysql -e 'SELECT SLEEP(5);'</pre>
<p>Note: you don't have to have any databases or tables to use SLEEP().</p>
<p>Here is what it looks like if everything worked correctly. If not, make sure that the log file you specified exists and mysql user has access, and also that your GLOBALs are set correctly.</p>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgyrwFQt-AMyKcfUMjN7EMPkgFopUKzAEhL55f8LFJjyKG1id_qWNqzg60dHp-Qfhef4v90khlCOQe9QdU-wF71uurlF6UaWXpLHjbVtb9uTacOQQoFJtnuNoA4szcij7SdSE-3ZD1pRuuR/s1600/enable-slow-query-log-mysql-optimization-tuning.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgyrwFQt-AMyKcfUMjN7EMPkgFopUKzAEhL55f8LFJjyKG1id_qWNqzg60dHp-Qfhef4v90khlCOQe9QdU-wF71uurlF6UaWXpLHjbVtb9uTacOQQoFJtnuNoA4szcij7SdSE-3ZD1pRuuR/s320/enable-slow-query-log-mysql-optimization-tuning.jpg" alt="Enable MySQL Slow Query Logging for Optimization and Tuning" /></a>
<p>Here is a summary of all of the different ways to turn on slow query logging in various versions of MySQL:</p>
<ul>
<li>Before 5.1.6, start mysqld with the --log-slow-queries[=file_name] option.</li>
<li>In versions after MySQL 5.1.6, you can log a file or a table, or both. Start mysqld with the --log-slow-queries[=file_name] option and optionally use --log-output to specify the log destination.</li>
<li>After MySQL 5.1.12, use --slow_query_log[={0|1}] - 1 is on and the default slow query log file name is used.</li>
<li>After MySQL 5.1.29, use --slow_query_log[={0|1}] - the --log-slow-queries option is deprecated. </li>
<li>When using slow_query_log=1 (either in my.cnf or starting with mysqld --slow_query_log=1) use slow_query_log_file=/your/log/file or just leave it as the default ($hostname-slow.log in the mysql data folder).</li>
</ul>
<p>More info about slow query logging at the official <a href="http://dev.mysql.com/doc/refman/5.1/en/slow-query-log.html" target="_blank">MySQL Reference</a>.</p>
<p>If you want to enable slow query logging without restarting mysql on MySQL 5.0, you can - use <a href="http://www.mysqlperformanceblog.com/2007/09/13/enablingdisabling-query-log-without-server-restart-in-mysql-50/" target="_blank">this patch</a></p>
<p><h4>Need help with MySQL Performance Tuning or Query Optimization? <a href="http://calladeveloper.com" title="Call a Developer for MySQL Performance Tuning">Call A Developer</a>.</h4></p>
<p>Peter Stolmar is a Linux Systems Administrator and technology optimization specialist. He can help you fix websites and apps, or make then run faster and scale better. Need help with some tech stuff? Find <a href="https://plus.google.com/117303725737258749675/about/?rel=author">Peter Stolmar on Google+</a>.</p>Anonymoushttp://www.blogger.com/profile/04456412733236287665noreply@blogger.com17