<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: mysql-proxy, urgh performance and scalability ?</title>
	<atom:link href="http://www.mysqlperformanceblog.com/2009/06/09/mysql-proxy-urgh-performance-and-scalability/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.mysqlperformanceblog.com/2009/06/09/mysql-proxy-urgh-performance-and-scalability/</link>
	<description>Everything about MySQL Performance</description>
	<lastBuildDate>Sat, 21 Nov 2009 05:23:57 -0800</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: mtkopone</title>
		<link>http://www.mysqlperformanceblog.com/2009/06/09/mysql-proxy-urgh-performance-and-scalability/comment-page-1/#comment-600949</link>
		<dc:creator>mtkopone</dc:creator>
		<pubDate>Tue, 30 Jun 2009 09:24:51 +0000</pubDate>
		<guid isPermaLink="false">http://www.mysqlperformanceblog.com/?p=700#comment-600949</guid>
		<description>Hi, 

Informative post, but it wasn&#039;t clear to me whether the you used some kind of connection pooling? I.e. is the performance bad because of connection creation, or will the penalty effect each query run thru an open connection.</description>
		<content:encoded><![CDATA[<p>Hi, </p>
<p>Informative post, but it wasn&#8217;t clear to me whether the you used some kind of connection pooling? I.e. is the performance bad because of connection creation, or will the penalty effect each query run thru an open connection.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Robert</title>
		<link>http://www.mysqlperformanceblog.com/2009/06/09/mysql-proxy-urgh-performance-and-scalability/comment-page-1/#comment-581430</link>
		<dc:creator>Robert</dc:creator>
		<pubDate>Wed, 10 Jun 2009 20:09:32 +0000</pubDate>
		<guid isPermaLink="false">http://www.mysqlperformanceblog.com/?p=700#comment-581430</guid>
		<description>BTW Vadim, it looks as if you are hitting the proxy math problem I talked about at your recent and highly esteemed &quot;Performance is Everything&quot; conference.  (Slides: https://s3.amazonaws.com/extras.continuent.com/Tungsten-Proxy-Architectures-2009-04-22.pdf)</description>
		<content:encoded><![CDATA[<p>BTW Vadim, it looks as if you are hitting the proxy math problem I talked about at your recent and highly esteemed &#8220;Performance is Everything&#8221; conference.  (Slides: <a href="https://s3.amazonaws.com/extras.continuent.com/Tungsten-Proxy-Architectures-2009-04-22.pdf)" rel="nofollow">https://s3.amazonaws.com/extras.continuent.com/Tungsten-Proxy-Architectures-2009-04-22.pdf)</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Robert</title>
		<link>http://www.mysqlperformanceblog.com/2009/06/09/mysql-proxy-urgh-performance-and-scalability/comment-page-1/#comment-581429</link>
		<dc:creator>Robert</dc:creator>
		<pubDate>Wed, 10 Jun 2009 20:05:41 +0000</pubDate>
		<guid isPermaLink="false">http://www.mysqlperformanceblog.com/?p=700#comment-581429</guid>
		<description>Hi Vadim, 

Try Tungsten Connector.  (http://www.continuent.com/community/tungsten-connector) It&#039;s written in Java and schedules threads efficiently across multiple cores.  

Also, what do you need Lua for?  If you provide a use case we can look at how to get it for you.  We have a lot of work afoot in this area, for example implementing session consistency load balancing. 

Cheers, Robert</description>
		<content:encoded><![CDATA[<p>Hi Vadim, </p>
<p>Try Tungsten Connector.  (<a href="http://www.continuent.com/community/tungsten-connector" rel="nofollow">http://www.continuent.com/community/tungsten-connector</a>) It&#8217;s written in Java and schedules threads efficiently across multiple cores.  </p>
<p>Also, what do you need Lua for?  If you provide a use case we can look at how to get it for you.  We have a lot of work afoot in this area, for example implementing session consistency load balancing. </p>
<p>Cheers, Robert</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Vadim</title>
		<link>http://www.mysqlperformanceblog.com/2009/06/09/mysql-proxy-urgh-performance-and-scalability/comment-page-1/#comment-581323</link>
		<dc:creator>Vadim</dc:creator>
		<pubDate>Wed, 10 Jun 2009 15:28:17 +0000</pubDate>
		<guid isPermaLink="false">http://www.mysqlperformanceblog.com/?p=700#comment-581323</guid>
		<description>Erik,

I did not try ha-proxy, it seems it does not support functionality I need, I am looking to handle coming queries in one specific way.</description>
		<content:encoded><![CDATA[<p>Erik,</p>
<p>I did not try ha-proxy, it seems it does not support functionality I need, I am looking to handle coming queries in one specific way.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Vadim</title>
		<link>http://www.mysqlperformanceblog.com/2009/06/09/mysql-proxy-urgh-performance-and-scalability/comment-page-1/#comment-581319</link>
		<dc:creator>Vadim</dc:creator>
		<pubDate>Wed, 10 Jun 2009 15:21:09 +0000</pubDate>
		<guid isPermaLink="false">http://www.mysqlperformanceblog.com/?p=700#comment-581319</guid>
		<description>Baron,

It was long time ago and was very early releases, so I do not remember all details. Can&#039;t say it was in previous release.</description>
		<content:encoded><![CDATA[<p>Baron,</p>
<p>It was long time ago and was very early releases, so I do not remember all details. Can&#8217;t say it was in previous release.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Vadim</title>
		<link>http://www.mysqlperformanceblog.com/2009/06/09/mysql-proxy-urgh-performance-and-scalability/comment-page-1/#comment-581317</link>
		<dc:creator>Vadim</dc:creator>
		<pubDate>Wed, 10 Jun 2009 15:19:22 +0000</pubDate>
		<guid isPermaLink="false">http://www.mysqlperformanceblog.com/?p=700#comment-581317</guid>
		<description>Jan, 

I will try recent trunk.
Current run was without Lua scripts, but actually I am looking to add some scripts, we I need Lua...</description>
		<content:encoded><![CDATA[<p>Jan, </p>
<p>I will try recent trunk.<br />
Current run was without Lua scripts, but actually I am looking to add some scripts, we I need Lua&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: erik</title>
		<link>http://www.mysqlperformanceblog.com/2009/06/09/mysql-proxy-urgh-performance-and-scalability/comment-page-1/#comment-581280</link>
		<dc:creator>erik</dc:creator>
		<pubDate>Wed, 10 Jun 2009 14:28:34 +0000</pubDate>
		<guid isPermaLink="false">http://www.mysqlperformanceblog.com/?p=700#comment-581280</guid>
		<description>What about using ha-proxy? Its not an sql specific proxy but seems like it could balance the connections just as well as anything.</description>
		<content:encoded><![CDATA[<p>What about using ha-proxy? Its not an sql specific proxy but seems like it could balance the connections just as well as anything.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Michael Peters</title>
		<link>http://www.mysqlperformanceblog.com/2009/06/09/mysql-proxy-urgh-performance-and-scalability/comment-page-1/#comment-581239</link>
		<dc:creator>Michael Peters</dc:creator>
		<pubDate>Wed, 10 Jun 2009 13:37:44 +0000</pubDate>
		<guid isPermaLink="false">http://www.mysqlperformanceblog.com/?p=700#comment-581239</guid>
		<description>Have you looked at DBD::Gofer from the Perl world? It doesn&#039;t support transactions but I&#039;d be interested to see how it stacks up.</description>
		<content:encoded><![CDATA[<p>Have you looked at DBD::Gofer from the Perl world? It doesn&#8217;t support transactions but I&#8217;d be interested to see how it stacks up.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Baron Schwartz</title>
		<link>http://www.mysqlperformanceblog.com/2009/06/09/mysql-proxy-urgh-performance-and-scalability/comment-page-1/#comment-581144</link>
		<dc:creator>Baron Schwartz</dc:creator>
		<pubDate>Wed, 10 Jun 2009 12:40:02 +0000</pubDate>
		<guid isPermaLink="false">http://www.mysqlperformanceblog.com/?p=700#comment-581144</guid>
		<description>It&#039;s worth noting that this is an improvement over the last time I remember Vadim trying out mysql-proxy.  Maybe I&#039;m wrong, but I remember it crashing so we couldn&#039;t really benchmark it?  Vadim, do you remember that, or am I telling lies?</description>
		<content:encoded><![CDATA[<p>It&#8217;s worth noting that this is an improvement over the last time I remember Vadim trying out mysql-proxy.  Maybe I&#8217;m wrong, but I remember it crashing so we couldn&#8217;t really benchmark it?  Vadim, do you remember that, or am I telling lies?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Kay Roepke</title>
		<link>http://www.mysqlperformanceblog.com/2009/06/09/mysql-proxy-urgh-performance-and-scalability/comment-page-1/#comment-581005</link>
		<dc:creator>Kay Roepke</dc:creator>
		<pubDate>Wed, 10 Jun 2009 09:33:58 +0000</pubDate>
		<guid isPermaLink="false">http://www.mysqlperformanceblog.com/?p=700#comment-581005</guid>
		<description>Hi Vadim!

As you&#039;ve found, the single-threaded implementation of 0.7.1 has its limits. And depending on the workload yes the hit can be up to 75% (which matches quite nicely with worst-case benchmarks I have done in the past).

As Peter points out: It is interesting to look at the overhead curve across different applications.
My rule of thumb for 0.7 performance is: The shorter the query execution time, the higher the overhead will be. This is a direct consequence of 0.7 being single-threaded and event-based, because MySQL Proxy 0.7 can make progress whenever it waits for events, so naturally many short queries will mean that Proxy needs to do a lot of work for each query (because the result packets will arrive very shortly after the query was issued, decreasing the time it can spend on other queries).
Lots of work in Lua scripts will also block progress on other connections in 0.7.

For 0.8 (current trunk on Launchpad) the picture is different: The multithreading in it applies to all network communication, even when one thread is spending time in Lua (although in 0.8 only one thread can be in Lua-land at any given time - lifting this is scheduled for 0.9 as Jan says). Thus Proxy can make progress on up to as many connections as you have event-threads running. Connections can wander between threads, so on average you can have as many concurrent active connections being serviced as you have threads.

We are ramping up on regular scalability testing for it, but are not quite there yet (waiting on some infrastructure to be ready) but once we are we will be publishing results regularly.

If you are interested, we&#039;ve spent quite some time improving the code and architecture documentation in the current trunk (you&#039;ll need doxygen/graphviz/mscgen). It explains the architecture clearly, we are hoping ;)
In case you find any bugs, please report them at http://bugs.mysql.com in the Proxy component. If you have additional questions, we are on #mysql-proxy on freenode, as well.

cheers,
-k</description>
		<content:encoded><![CDATA[<p>Hi Vadim!</p>
<p>As you&#8217;ve found, the single-threaded implementation of 0.7.1 has its limits. And depending on the workload yes the hit can be up to 75% (which matches quite nicely with worst-case benchmarks I have done in the past).</p>
<p>As Peter points out: It is interesting to look at the overhead curve across different applications.<br />
My rule of thumb for 0.7 performance is: The shorter the query execution time, the higher the overhead will be. This is a direct consequence of 0.7 being single-threaded and event-based, because MySQL Proxy 0.7 can make progress whenever it waits for events, so naturally many short queries will mean that Proxy needs to do a lot of work for each query (because the result packets will arrive very shortly after the query was issued, decreasing the time it can spend on other queries).<br />
Lots of work in Lua scripts will also block progress on other connections in 0.7.</p>
<p>For 0.8 (current trunk on Launchpad) the picture is different: The multithreading in it applies to all network communication, even when one thread is spending time in Lua (although in 0.8 only one thread can be in Lua-land at any given time &#8211; lifting this is scheduled for 0.9 as Jan says). Thus Proxy can make progress on up to as many connections as you have event-threads running. Connections can wander between threads, so on average you can have as many concurrent active connections being serviced as you have threads.</p>
<p>We are ramping up on regular scalability testing for it, but are not quite there yet (waiting on some infrastructure to be ready) but once we are we will be publishing results regularly.</p>
<p>If you are interested, we&#8217;ve spent quite some time improving the code and architecture documentation in the current trunk (you&#8217;ll need doxygen/graphviz/mscgen). It explains the architecture clearly, we are hoping <img src='http://www.mysqlperformanceblog.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /><br />
In case you find any bugs, please report them at <a href="http://bugs.mysql.com" rel="nofollow">http://bugs.mysql.com</a> in the Proxy component. If you have additional questions, we are on #mysql-proxy on freenode, as well.</p>
<p>cheers,<br />
-k</p>
]]></content:encoded>
	</item>
</channel>
</rss>
