<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	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/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>MySQL实践积累</title>
	<atom:link href="http://dbahacker.com/feed" rel="self" type="application/rss+xml" />
	<link>http://dbahacker.com</link>
	<description></description>
	<lastBuildDate>Wed, 01 Feb 2012 07:48:47 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>MySQL group by with rollup的用法</title>
		<link>http://dbahacker.com/mysql/mysql-group-by-with-rollup%e7%9a%84%e7%94%a8%e6%b3%95</link>
		<comments>http://dbahacker.com/mysql/mysql-group-by-with-rollup%e7%9a%84%e7%94%a8%e6%b3%95#comments</comments>
		<pubDate>Wed, 01 Feb 2012 07:48:47 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://dbahacker.com/?p=219</guid>
		<description><![CDATA[有一位同学通过askdba来询问with rollup的用法 (2012-02-01 15:08:22): mysql中有这种用法select ... from table_name group by a with rollup &#34;with rollup&#34;是什么意思呢？ GROUP BY Modifiers&#160; 官方手册里面对这个rollup有一个专门的页面介绍 地址在这里，说得非常详细，我这里做一个简单的例子重现 建一个简单的表并插入几条简单的数据 CREATE TABLE `t` ( `id` int(11) DEFAULT NULL, `id2` int(11) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=gbk insert into t valeu(11,11),(12,12),(13,13); 先来做一个查询 root@test 03:44:32&#62;select id,sum(id2),avg(id2) from t group by id with rollup; +------+----------+----------+ &#124; id [...]]]></description>
			<content:encoded><![CDATA[<p>有一位同学通过askdba来询问with rollup的用法</p>
<pre style="border-bottom: #cecece 1px solid; border-left: #cecece 1px solid; padding-bottom: 5px; background-color: #fbfbfb; min-height: 40px; padding-left: 5px; width: 600px; padding-right: 5px; overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; padding-top: 5px">
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">(2012-02-01 15:08:22):
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px"> mysql中有这种用法select ... from table_name  group by a with rollup
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">&quot;<span style="color: #8b0000">with rollup</span>&quot;是什么意思呢？
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px"></pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px"></pre>
</pre>
<p>GROUP BY Modifiers&#160; 官方手册里面对这个rollup有一个专门的页面介绍 <a href="http://dev.mysql.com/doc/refman/5.5/en/group-by-modifiers.html" target="_blank">地址在这里</a>，说得非常详细，我这里做一个简单的例子重现</p>
<p>建一个简单的表并插入几条简单的数据</p>
<pre style="border-bottom: #cecece 1px solid; border-left: #cecece 1px solid; padding-bottom: 5px; background-color: #fbfbfb; min-height: 40px; padding-left: 5px; width: 600px; padding-right: 5px; overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; padding-top: 5px">
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">CREATE TABLE `t` (
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">  `id` <span style="color: #0000ff">int</span>(11) DEFAULT NULL,
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">  `id2` <span style="color: #0000ff">int</span>(11) DEFAULT NULL
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">) ENGINE=InnoDB DEFAULT CHARSET=gbk
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">insert into t valeu(11,11),(12,12),(13,13);
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px"></pre>
</pre>
<p>先来做一个查询</p>
<pre style="border-bottom: #cecece 1px solid; border-left: #cecece 1px solid; padding-bottom: 5px; background-color: #fbfbfb; min-height: 40px; padding-left: 5px; width: 600px; padding-right: 5px; overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; padding-top: 5px">
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">root@test 03:44:32&gt;select id,sum(id2),avg(id2) from t group by id with rollup;
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">+------+----------+----------+
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">| id   | sum(id2) | avg(id2) |
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">+------+----------+----------+
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">|   11 |       11 |  11.0000 |
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">|   12 |       12 |  12.0000 |
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">|   13 |       13 |  13.0000 |
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">| NULL |       36 |  12.0000 |
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">+------+----------+----------+
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">4 rows in set (0.00 sec)</pre>
</pre>
<p>我们可以看到，对于group by的列，with rollup将不会做任何的操作，而是返回一个NULL，而没有group by的列，则根据前面的avg函数和sum函数做了处理。 </p>
<p>再来看另外一个语句，只对一个列做avg</p>
<pre style="border-bottom: #cecece 1px solid; border-left: #cecece 1px solid; padding-bottom: 5px; background-color: #fbfbfb; min-height: 40px; padding-left: 5px; width: 600px; padding-right: 5px; overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; padding-top: 5px">
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">root@test 03:44:36&gt;select id,avg(id2) from t group by id with rollup;
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">+------+----------+
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">| id   | avg(id2) |
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">+------+----------+
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">|   11 |  11.0000 |
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">|   12 |  12.0000 |
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">|   13 |  13.0000 |
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">| NULL |  12.0000 |
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">+------+----------+
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">4 rows in set (0.00 sec)</pre>
</pre>
<p>以前从没留意到有这种用法，这次长见识了。 </p>
]]></content:encoded>
			<wfw:commentRss>http://dbahacker.com/mysql/mysql-group-by-with-rollup%e7%9a%84%e7%94%a8%e6%b3%95/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>redhat5 和redhat6 root用户不同的ulimits</title>
		<link>http://dbahacker.com/linux/redhat5-%e5%92%8credhat6-root%e7%94%a8%e6%88%b7%e4%b8%8d%e5%90%8c%e7%9a%84ulimits</link>
		<comments>http://dbahacker.com/linux/redhat5-%e5%92%8credhat6-root%e7%94%a8%e6%88%b7%e4%b8%8d%e5%90%8c%e7%9a%84ulimits#comments</comments>
		<pubDate>Tue, 31 Jan 2012 09:27:05 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[redhat6]]></category>

		<guid isPermaLink="false">http://dbahacker.com/?p=214</guid>
		<description><![CDATA[以前一直都是用redhat5，redhat6也处于测试阶段，当然也遇到了很多奇奇怪怪的问题，比如之前写的一篇博客,当时候是用root启动了mysqld_unsafe，在mysql的QPS到1W以上后，会出现ERROR 1135 (HY000): Can’t create a new thread (errno 11); 当时候的解决办法是用mysql用户来启动就解决了问题。但因为在系统重启后，如果用sudo&#160; -u mysql来启动的话，脚本会被卡主。 这个问题今天得到了一个稍微深入一点的结论。 首先我们看看这个错误 ERROR 1135 (HY000): Can’t create a new thread (errno 11); if you are not out of available memory, you can consult the manual for a possible OS-dependent bug google类似Can’t create a new thread的错误后，得到的结论是文件描述符不够用，检查了vim /etc/security/limits.conf&#160;&#160; 的设置，是正常的 vim /etc/security/limits.conf 得到的结果是 root soft [...]]]></description>
			<content:encoded><![CDATA[<p><font face="新宋体">以前一直都是用redhat5，redhat6也处于测试阶段，当然也遇到了很多奇奇怪怪的问题，比如之前写的一篇</font><a href="http://dbahacker.com/linux/error-1135-hy000-cant-create-a-new-thread-errno-11" target="_blank"><font face="新宋体">博客</font></a><font face="新宋体">,当时候是用root启动了mysqld_unsafe，在mysql的QPS到1W以上后，会出现ERROR 1135 (HY000): Can’t create a new thread (errno 11); 当时候的解决办法是用mysql用户来启动就解决了问题。但因为在系统重启后，如果用sudo&#160; -u mysql来启动的话，脚本会被卡主。</font></p>
<p><font face="新宋体">这个问题今天得到了一个稍微深入一点的结论。</font></p>
<p><font face="新宋体">首先我们看看这个错误</font></p>
<pre style="border-bottom: #cecece 1px solid; border-left: #cecece 1px solid; padding-bottom: 5px; background-color: #fbfbfb; min-height: 40px; padding-left: 5px; width: 600px; padding-right: 5px; overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; padding-top: 5px">
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">ERROR 1135 (HY000): Can’t create a new thread (errno 11);
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px"><span style="color: #0000ff">if</span> you are not out of available memory,
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">you can consult the manual <span style="color: #0000ff">for</span> a possible OS-dependent bug</pre>
</pre>
<p>google类似Can’t create a new thread的错误后，得到的结论是文件描述符不够用，检查了vim /etc/security/limits.conf&#160;&#160; 的设置，是正常的</p>
<pre style="border-bottom: #cecece 1px solid; border-left: #cecece 1px solid; padding-bottom: 5px; background-color: #fbfbfb; min-height: 40px; padding-left: 5px; width: 600px; padding-right: 5px; overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; padding-top: 5px">
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">vim /etc/security/limits.conf
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">得到的结果是
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">root    soft    nofile  65535
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">root    hard    nofile  65535
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">admin   soft    nofile  65535
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">admin   hard    nofile  65535
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px"># End of file
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">mysql   soft    nproc   65536
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">mysql   hard    nproc   65536
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">mysql   soft    nofile  65535
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">mysql   hard    nofile  65535</pre>
</pre>
<div class="csharpcode">但观察了sudo -u root bash -c &quot; ulimit -a &quot; 后，得到 max user processes&#160;&#160; (-u) 1024</div>
<pre style="border-bottom: #cecece 1px solid; border-left: #cecece 1px solid; padding-bottom: 5px; background-color: #fbfbfb; min-height: 40px; padding-left: 5px; width: 600px; padding-right: 5px; overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; padding-top: 5px">
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">core file size          (blocks, -c) 0
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px"></pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">data seg size           (kbytes, -d) unlimited
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px"></pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">scheduling priority             (-e) 0
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px"></pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">file size               (blocks, -f) unlimited
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px"></pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">pending signals                 (-i) 385957
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px"></pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">max locked memory       (kbytes, -l) 64
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px"></pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">max memory size         (kbytes, -m) unlimited
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px"></pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px"><span style="color: #0000ff">open</span> files                      (-n) 65535
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px"></pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">pipe size            (512 bytes, -p) 8
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px"></pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">POSIX message queues     (bytes, -q) 819200
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px"></pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">real-<span style="color: #0000ff">time</span> priority              (-r) 0
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px"></pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">stack size              (kbytes, -s) 10240
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px"></pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">cpu <span style="color: #0000ff">time</span>               (seconds, -t) unlimited
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px"></pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">max user processes              (-u) 1024
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px"></pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">virtual memory          (kbytes, -v) unlimited
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px"></pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">file locks                      (-x) unlimited</pre>
</pre>
<div class="csharpcode">max user processes&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; (-u) 1024 和 sudo -u root bash -c &quot; ulimit -u &quot;&#160; 一样，都是得到1024的结果</div>
<pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">sudo -u root bash -c &quot;<span style="color: #8b0000"> ulimit -u </span>&quot;
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">1024</pre>
</pre>
<style type="text/css">
<p>.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
<p>而在redhat5里面，只要在/etc/security/limits.conf&#160; 设置了root&#160;&#160;&#160; soft&#160;&#160;&#160; nofile&#160; 65535 和root&#160;&#160;&#160; hard&#160;&#160;&#160; nofile&#160; 65535，对应的uilmit&#160; -u 就会是65535. </p>
<p>和@维西v @tb天羽 搞了几个小时，依然没法成功修改root用户的 max user processes到65535 。后来发现了<a href="http://dlutzy.wordpress.com/2011/05/19/know-your-limits-ulimits/" target="_blank">一篇文章</a> Know your limits (ulimits)&#160; ，提及到redhat6新增了/etc/security/limits.d/90-nproc.conf，里面的内容是</p>
<pre style="border-bottom: #cecece 1px solid; border-left: #cecece 1px solid; padding-bottom: 5px; background-color: #fbfbfb; min-height: 40px; padding-left: 5px; width: 600px; padding-right: 5px; overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; padding-top: 5px">
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px"># Default limit <span style="color: #0000ff">for</span> number of user's processes to prevent
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px"></pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px"># accidental fork bombs.
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px"></pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px"># See rhbz #432903 <span style="color: #0000ff">for</span> reasoning.
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px"></pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">*          soft    nproc     1024</pre>
</pre>
<p><strong><font size="4">redhat6下面，root用户使用ulimit -u没法修改</font></strong></p>
<p>* soft nproc 1024的意思是任何用户的最大max user processes为1024个，其他用户可以通过ulimit -u来修改 ，但root用户则修改不成功，我们这里看一个例子</p>
<pre style="border-bottom: #cecece 1px solid; border-left: #cecece 1px solid; padding-bottom: 5px; background-color: #fbfbfb; min-height: 40px; padding-left: 5px; width: 600px; padding-right: 5px; overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; padding-top: 5px">
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">[yingyuan.ydh@my031226 ~]$ cat /etc/security/limits.d/90-nproc.conf
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px"></pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px"># Default limit <span style="color: #0000ff">for</span> number of user's processes to prevent
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px"></pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px"># accidental fork bombs.
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px"></pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px"># See rhbz #432903 <span style="color: #0000ff">for</span> reasoning.
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px"></pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">*          soft    nproc     1024
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">[yingyuan.ydh@my031226 ~]$ ulimit -u
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">1024
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">[yingyuan.ydh@my031226 ~]$ ulimit -u 65535
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">[yingyuan.ydh@my031226 ~]$ ulimit -u
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">65535
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">[yingyuan.ydh@my031226 ~]$ sudo -uroot bash -c &quot;<span style="color: #8b0000"> ulimit -u 65535</span>&quot;
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">[yingyuan.ydh@my031226 ~]$ sudo -uroot bash -c &quot;<span style="color: #8b0000"> ulimit -u </span>&quot;
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">1024
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px"></pre>
</pre>
<p>很明显，在redhat6的/etc/security/limits.d/90-nproc.conf限制下，个人用户可以修改ulimit-u,但root用户没法修改。 <strong>解下来，我们把etc/security/limits.d/90-nproc.conf改掉，会看到root的ulimit -u 可以修改成功</strong>。 </p>
<pre style="border-bottom: #cecece 1px solid; border-left: #cecece 1px solid; padding-bottom: 5px; background-color: #fbfbfb; min-height: 40px; padding-left: 5px; width: 600px; padding-right: 5px; overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; padding-top: 5px">
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">[yingyuan.ydh@my031226 ~]$ sudo -uroot bash -c &quot;<span style="color: #8b0000"> ulimit -u 65535</span>&quot;
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px"></pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">[yingyuan.ydh@my031226 ~]$ sudo -uroot bash -c &quot;<span style="color: #8b0000"> ulimit -u </span>&quot;
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px"></pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">65535
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px"></pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">[yingyuan.ydh@my031226 ~]$ cat /etc/security/limits.d/90-nproc.conf
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px"></pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px"># Default limit <span style="color: #0000ff">for</span> number of user's processes to prevent
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px"></pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px"># accidental fork bombs.
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px"></pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px"># See rhbz #432903 <span style="color: #0000ff">for</span> reasoning.
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px"></pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">*          soft    nproc     65535</pre>
</pre>
<p><strong><font size="4">结果</font></strong></p>
<p><strong><font size="4"></font></strong>在成功修改了root用户的max user processes后，继续使用root用户启动mysqld_safe脚本，稳定运行了一个下午，一切正常。 </p>
<p><strong><font size="4">思考</font></strong></p>
<p>为什么redhat6要做新增一个文件的限制，而不是继续沿用redhat5的方式来管理？ 在微博上面发了一条简单的描述，引起很多人的讨论。 </p>
<p><a href="http://weibo.com/1642466057/y3jM4cz3q">http://weibo.com/1642466057/y3jM4cz3q</a></p>
</p>
<p><font face="新宋体"></font></p>
]]></content:encoded>
			<wfw:commentRss>http://dbahacker.com/linux/redhat5-%e5%92%8credhat6-root%e7%94%a8%e6%88%b7%e4%b8%8d%e5%90%8c%e7%9a%84ulimits/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>遭遇Linux进程状态D</title>
		<link>http://dbahacker.com/linux/%e9%81%ad%e9%81%87linux%e8%bf%9b%e7%a8%8b%e7%8a%b6%e6%80%81d</link>
		<comments>http://dbahacker.com/linux/%e9%81%ad%e9%81%87linux%e8%bf%9b%e7%a8%8b%e7%8a%b6%e6%80%81d#comments</comments>
		<pubDate>Thu, 19 Jan 2012 14:37:58 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://dbahacker.com/?p=211</guid>
		<description><![CDATA[在一台flashcache的机器上面跑stap脚本 global some_count probe process(@1).function(&#34;*&#34;) { &#160; some_count[tid()] = backtrace() } function print_top() { &#160; foreach (tid+ in some_count) &#160; { &#160;&#160;&#160; print_stack(some_count[tid]) &#160; } } probe timer.s(5) { &#160; print_top() &#160; printf(&#34;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-\n&#34;) } 跑了这个脚本，跑了一会就ctrl+c abort掉，但后台还是有一个D进程的程序，用了好几次kill -9也杀不掉 1 15466 15252 14863 ?&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; -1 D&#160;&#160;&#160;&#160;&#160;&#160;&#160; 0&#160;&#160; 0:00 /usr/libexec/systemtap/stapio -u /tmp/stapzHoiGc/stap_b2dc831605d82ca90db5b550e7dfd16a_24607.ko 在Linux里面，进程状态分为task_running,task_interruptiable,task_uninterruptiable，_task_traced _task_stopped 之前一直对task_uninterruptiable不是很理解，这次亲身经历后，对它的认识更加深入。 进程状态为D的进程，一直滞留在CPU run_queue里面，搞得我的其他进程都不能正常运行，尝试了kill –9 [...]]]></description>
			<content:encoded><![CDATA[<p>在一台flashcache的机器上面跑stap脚本</p>
<blockquote><p>global some_count     <br />probe process(@1).function(&quot;*&quot;)      <br />{      <br />&#160; some_count[tid()] = backtrace()      <br />} </p>
<p>function print_top()     <br />{      <br />&#160; foreach (tid+ in some_count)      <br />&#160; {      <br />&#160;&#160;&#160; print_stack(some_count[tid])      <br />&#160; }      <br />} </p>
<p>probe timer.s(5)     <br />{      <br />&#160; print_top()      <br />&#160; printf(&quot;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-\n&quot;)      <br />}</p>
</blockquote>
<p>跑了这个脚本，跑了一会就ctrl+c abort掉，但后台还是有一个D进程的程序，用了好几次kill -9也杀不掉</p>
<blockquote><p>1 15466 15252 14863 ?&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; -1 D&#160;&#160;&#160;&#160;&#160;&#160;&#160; 0&#160;&#160; 0:00 /usr/libexec/systemtap/stapio -u /tmp/stapzHoiGc/stap_b2dc831605d82ca90db5b550e7dfd16a_24607.ko</p>
</blockquote>
<p>在Linux里面，进程状态分为task_running,task_interruptiable,task_uninterruptiable，_task_traced _task_stopped</p>
<p>之前一直对task_uninterruptiable不是很理解，这次亲身经历后，对它的认识更加深入。</p>
<p>进程状态为D的进程，一直滞留在CPU run_queue里面，搞得我的其他进程都不能正常运行，尝试了kill –9 ，没办法杀掉。最后只能reboot解决</p>
<p>之所以命名为D，往往是因为I/O资源得不到满足而引发等待。</p>
<p>我们的备库依赖nas服务器来作为备份盘，今年遇到过好几次因为nas的问题，导致mysql的监控一直告警(监控程序需要连接到MySQL,但由于备份脚本因为在写nas的时候，nas在中途卸载掉了，导致脚本一直在等待nas就绪,必须得重新挂载nas才能解决)</p>
<p>&#160;</p>
<p><a href="http://dbahacker.com/wp-content/uploads/2012/01/image4.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://dbahacker.com/wp-content/uploads/2012/01/image_thumb4.png" width="559" height="421" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://dbahacker.com/linux/%e9%81%ad%e9%81%87linux%e8%bf%9b%e7%a8%8b%e7%8a%b6%e6%80%81d/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CPU软中断实践一</title>
		<link>http://dbahacker.com/linux/cpu%e8%bd%af%e4%b8%ad%e6%96%ad%e5%ae%9e%e8%b7%b5%e4%b8%80</link>
		<comments>http://dbahacker.com/linux/cpu%e8%bd%af%e4%b8%ad%e6%96%ad%e5%ae%9e%e8%b7%b5%e4%b8%80#comments</comments>
		<pubDate>Tue, 17 Jan 2012 18:03:07 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://dbahacker.com/?p=206</guid>
		<description><![CDATA[最近在对一个MySQL项目进行性能测试 QPS在1.1W到1.5W之间波动，但通过tcprstat观察到，响应时间不是非常稳定，会从0.3ms波动到1.9ms 响应时间监控，avg代表的是平均响应时间，单位为微秒，这里可以看到，平均响应时间为0.3ms 到1.7ms之间波动 @淘宝褚霸 在帮忙分析的时候，给了三点建议 1.CPU 2.IO 3.内存 这里先从CPU使用优化来总结一下 1.首先定位系统的CPU占用是否正常，可以使用 命令 mpstat –P ALL&#160; 1 我们可以看到第四颗CPU的idle百分比明显比其他CPU要低好多。那这颗CPU到底在忙什么事情？&#160;&#160;&#160; perf top 工具可以帮我们查看，这颗CPU上面跑的进程的百分比 2. sudo perf top &#8211;cpu=4 输出的结果和oprofile相似，但perf top可以实时来做cpu采样，这点比oprofile要好使得多。 另外一个工具是 taskset ,例如 taskset -p 03 700&#160; 的意思是把pid为700的进程绑定到第四颗CPU上面]]></description>
			<content:encoded><![CDATA[<p>最近在对一个MySQL项目进行性能测试 QPS在1.1W到1.5W之间波动，但通过tcprstat观察到，响应时间不是非常稳定，会从0.3ms波动到1.9ms</p>
<p><a href="http://dbahacker.com/wp-content/uploads/2012/01/image.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://dbahacker.com/wp-content/uploads/2012/01/image_thumb.png" width="550" height="262" /></a> </p>
<p><font face="宋体">响应时间监控，avg代表的是平均响应时间，单位为微秒，这里可以看到，平均响应时间为0.3ms 到1.7ms之间波动</font></p>
<p><a href="http://dbahacker.com/wp-content/uploads/2012/01/image1.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://dbahacker.com/wp-content/uploads/2012/01/image_thumb1.png" width="540" height="154" /></a> </p>
<p><font face="宋体"><a href="http://weibo.com/tchuba" target="_blank">@淘宝褚霸</a> 在帮忙分析的时候，给了三点建议 1.CPU 2.IO 3.内存 这里先从CPU使用优化来总结一下</font></p>
<p><font face="宋体">1.首先定位系统的CPU占用是否正常，可以使用 命令 mpstat –P ALL&#160; 1</font><a href="http://dbahacker.com/wp-content/uploads/2012/01/image2.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://dbahacker.com/wp-content/uploads/2012/01/image_thumb2.png" width="548" height="211" /></a> </p>
<p><font face="宋体">我们可以看到第四颗CPU的idle百分比明显比其他CPU要低好多。那这颗CPU到底在忙什么事情？&#160;&#160;&#160; perf top 工具可以帮我们查看，这颗CPU上面跑的进程的百分比</font></p>
<p><font face="宋体">2. <strong>sudo perf top &#8211;cpu=4</strong> </font><a href="http://dbahacker.com/wp-content/uploads/2012/01/image3.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://dbahacker.com/wp-content/uploads/2012/01/image_thumb3.png" width="540" height="344" /></a> </p>
<p>输出的结果和oprofile相似，但perf top可以实时来做cpu采样，这点比oprofile要好使得多。 </p>
</p>
<p>另外一个工具是 taskset ,例如 taskset -p 03 700&#160; 的意思是把pid为700的进程绑定到第四颗CPU上面</p>
]]></content:encoded>
			<wfw:commentRss>http://dbahacker.com/linux/cpu%e8%bd%af%e4%b8%ad%e6%96%ad%e5%ae%9e%e8%b7%b5%e4%b8%80/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>ERROR 1135 (HY000): Can&#8217;t create a new thread (errno 11)</title>
		<link>http://dbahacker.com/linux/error-1135-hy000-cant-create-a-new-thread-errno-11</link>
		<comments>http://dbahacker.com/linux/error-1135-hy000-cant-create-a-new-thread-errno-11#comments</comments>
		<pubDate>Mon, 09 Jan 2012 13:33:25 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://dbahacker.com/?p=171</guid>
		<description><![CDATA[在一台MySQL测试服务器上面，今天遇到了 ERROR 1135 (HY000): Can&#8217;t create a new thread (errno 11); if you are not out of available memory, you can consult the manual for a possible OS-dependent bug 首先使用perror工具看一下 错误代码11代表的意思 perror 11 OS error code 11: Resource temporarily unavailable 资源暂时不可用 google搜索了一下，很多文章说和当前用户的文件描述符ulimit -n有关系 ulimit -n 65535 当时候mysql的服务器load 为0，自然不可能是文件描述符不够导致的问题 第二个检查操作 cat /etc/security/limits.conf 得到的结果是 root soft nofile 65535 root hard nofile 65535 admin soft nofile 65535 admin hard nofile 65535 # End of file mysql soft nproc 65536 mysql hard nproc 65536 mysql soft [...]]]></description>
			<content:encoded><![CDATA[<p>在一台MySQL测试服务器上面，今天遇到了</p>
<p><span style="color: #000000; font-family: 宋体;">ERROR 1135 (HY000): Can&#8217;t create a new thread (errno 11); if you are not out of available memory, you can consult the manual for a possible OS-dependent bug</span></p>
<p>首先使用perror工具看一下 错误代码11代表的意思</p>
<p>perror 11<br />
OS error code  11:  Resource temporarily unavailable<br />
资源暂时不可用<br />
google搜索了一下，很多文章说和当前用户的文件描述符ulimit -n有关系<br />
ulimit -n<br />
65535<br />
当时候mysql的服务器load 为0，自然不可能是文件描述符不够导致的问题<br />
<strong>第二个检查操作</strong> cat /etc/security/limits.conf<br />
得到的结果是<br />
root    soft    nofile  65535<br />
root    hard    nofile  65535<br />
admin   soft    nofile  65535<br />
admin   hard    nofile  65535<br />
# End of file<br />
mysql   soft    nproc   65536<br />
mysql   hard    nproc   65536<br />
mysql   soft    nofile  65535<br />
<strong>第三个检查操作 查看mysql的错误日志</strong><br />
有一个很奇怪的现象，我的mysql是一直跑着的，但错误日志只有前两天的</p>
<p>这个时候，在ps aux | grep mysql的输出中发现 -log-error=/var/log/mysqld.log ，错误日志输出到/var目录下面是不正常的<br />
<span style="color: #000000; font-family: 宋体;">mysql     2086 35.1 37.1 51184004 18388068 ?   Sl   20:25   9:01 </span><br />
<span style="color: #000000; font-family: 宋体;">/u01/mysql/bin/mysqld &#8211;basedir=/u01/mysql &#8211;datadir=/u01/mysql/data &#8211;plugin-dir=/u01/mysql/lib/plugin</span><br />
<span style="color: #000000; font-family: 宋体;"> &#8211;user=mysql &#8211;log-error=/var/log/mysqld.log &#8211;open-files-limit=65535 &#8211;pid-file=/u01/mysql/run/mysqld.pid</span><br />
<span style="color: #000000; font-family: 宋体;"> &#8211;socket=/u01/mysql/run/mysql.sock &#8211;port=3306</span></p>
<p>直觉告诉我mysql用了/etc/my.cnf的内容<br />
/etc/my.cnf的内容<br />
[mysqld]<br />
datadir=/var/lib/mysql<br />
socket=/var/lib/mysql/mysql.sock<br />
user=mysql<br />
# Disabling symbolic-links is recommended to prevent assorted security risks<br />
symbolic-links=0</p>
<p>[mysqld_safe]<br />
log-error=/var/log/mysqld.log<br />
pid-file=/var/run/mysqld/mysqld.pid</p>
<p>最终把mysqld_safe干掉后，用mysqld_safe &#8211;defaults-file=xx.cnf 重新指定my.cnf的位置，mysql就正常跑了<br />
最终原因，<a href="http://weibo.com/rezic7">@维西v</a> 启动mysql的时候没有指定my.cnf的位置，所以导致mysqld_safe使用了/etc/my.cnf这个默认文件<br />
但依然有问题不是很理解<br />
1.为什么读了/etc/my.cnf的时候，mysqld还会继续使用my.cnf配置文件里面的/u01/mysql/data<br />
2.为什么还会继续使用plugin-dir=/u01/mysql/lib/plugin</p>
]]></content:encoded>
			<wfw:commentRss>http://dbahacker.com/linux/error-1135-hy000-cant-create-a-new-thread-errno-11/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>编译Percona MySQL 5.5 +Handler Socket</title>
		<link>http://dbahacker.com/linux/mysql5-5-hs</link>
		<comments>http://dbahacker.com/linux/mysql5-5-hs#comments</comments>
		<pubDate>Wed, 02 Nov 2011 14:32:09 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://dbahacker.com/?p=161</guid>
		<description><![CDATA[安装准备 Cmake wget http://service-spi.web.cern.ch/service-spi/external/tarFiles/cmake-2.6.4.tar.gz Percona-Server-5.5.16-rel22.0  get http://www.percona.com/redir/downloads/Percona-Server-5.5/Percona-Server-5.5.16-22.0/source/Percona-Server-5.5.16-rel22.0.tar.gz $tar zxf cmake-2.6.4.tar.gz $cd cmake-2.6.4 $./bootstrap $make $sudo make install tar zxvf  Percona-Server-5.5.15-rel22.0.tar.gz cd  Percona-Server-5.5.15-rel22.0 执行 CFLAGS=”-O3&#8243; CXX=gcc CXXFLAGS=”-O3 -felide-constructors -fno-exceptions -fno-rtti” &#160; cmake . \ -DCMAKE_BUILD_TYPE:STRING=Release \ -DSYSCONFDIR:PATH=/u01/mysql \ -DCMAKE_INSTALL_PREFIX:PATH=/u01/mysql \ -DENABLED_PROFILING:BOOL=ON \ -DENABLE_DEBUG_SYNC:BOOL=OFF \ -DMYSQL_DATADIR:PATH=/u01/mysql/data \ -DMYSQL_MAINTAINER_MODE:BOOL=OFF \ -DWITH_EXTRA_CHARSETS:STRING=utf8,gbk,gb2312 \ -DWITH_BIG_TABLES:BOOL=ON \ -DWITH_FAST_MUTEXES:BOOL=ON \ -DENABLE-PROFILING:BOOL=ON \ -DWITH_SSL:STRING=bundled \ -DWITH_UNIT_TESTS:BOOL=OFF \ -DWITH_ZLIB:STRING=bundled \ -DWITH_PARTITION_STORAGE_ENGINE:BOOL=ON \ -DWITH_SERVER_SUFFIX=hxsw \ -DWITH_PLUGINS=heap,csv,partition,innodb_plugin,myisam [...]]]></description>
			<content:encoded><![CDATA[<p>安装准备 Cmake wget http://service-spi.web.cern.ch/service-spi/external/tarFiles/cmake-2.6.4.tar.gz</p>
<p>Percona-Server-5.5.16-rel22.0  get http://www.percona.com/redir/downloads/Percona-Server-5.5/Percona-Server-5.5.16-22.0/source/Percona-Server-5.5.16-rel22.0.tar.gz</p>
<div id="Msg_{738F92AD-B4C8-4D37-976E-797F91F847B1}"><span style="color: #000000; font-family: 宋体;">$tar zxf cmake-2.6.4.tar.gz<br />
$cd cmake-2.6.4<br />
$./bootstrap<br />
$make<br />
$sudo make install</span></div>
<p>tar zxvf  Percona-Server-5.5.15-rel22.0.tar.gz</p>
<p>cd  Percona-Server-5.5.15-rel22.0</p>
<p>执行 CFLAGS=”-O3&#8243; CXX=gcc CXXFLAGS=”-O3 -felide-constructors -fno-exceptions -fno-rtti”</p>
<p>&nbsp;</p>
<pre>cmake . \
  -DCMAKE_BUILD_TYPE:STRING=Release             \
  -DSYSCONFDIR:PATH=/u01/mysql            \
  -DCMAKE_INSTALL_PREFIX:PATH=/u01/mysql  \
  -DENABLED_PROFILING:BOOL=ON                   \
  -DENABLE_DEBUG_SYNC:BOOL=OFF                  \
  -DMYSQL_DATADIR:PATH=/u01/mysql/data    \
  -DMYSQL_MAINTAINER_MODE:BOOL=OFF              \
  -DWITH_EXTRA_CHARSETS:STRING=utf8,gbk,gb2312  \
  -DWITH_BIG_TABLES:BOOL=ON \
  -DWITH_FAST_MUTEXES:BOOL=ON \
  -DENABLE-PROFILING:BOOL=ON \
  -DWITH_SSL:STRING=bundled                     \
  -DWITH_UNIT_TESTS:BOOL=OFF                    \
  -DWITH_ZLIB:STRING=bundled                    \
  -DWITH_PARTITION_STORAGE_ENGINE:BOOL=ON       \
  -DWITH_SERVER_SUFFIX=hxsw                        \
  -DWITH_PLUGINS=heap,csv,partition,innodb_plugin,myisam \
  -DDEFAULT_CHARSET=gbk -DDEFAULT_COLLATION=gbk_chinese_ci -DWITH_EXTRA_CHARSETS=ALL \
  -DENABLED_ASSEMBLER:BOOL=ON                   \
  -DENABLED_LOCAL_INFILE:BOOL=ON                \
  -DENABLED_THREAD_SAFE_CLIENT:BOOL=ON          \
  -DENABLED_EMBEDDED_SERVER:BOOL=OFF             \
  -DWITH_CLIENT_LDFLAGS:STRING=all-static                 \
  -DINSTALL_LAYOUT:STRING=STANDALONE            \
  -DCOMMUNITY_BUILD:BOOL=ON;</pre>
<pre> make -j `cat /proc/cpuinfo  | grep processor | wc -l`</pre>
<pre>make install</pre>
<p>执行/u01/mysql/scripts/mysql_install_db &#8211;basedir=/u01/mysql/</p>
<p>(安装mysql,test数据库，初始化权限)</p>
<p>启动MySQL /u01/mysql/bin/mysqld_safe &#8211;defaults-file=my.cnf &amp;</p>
<p>(my.cnf 请参考/u01/pmysql/support-files 下面的 my-innodb-heavy-4G.cnf文件 ）</p>
<p>启动MySQL后，登录后</p>
<pre>Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.5.16-log MySQL Community Server (GPL)

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql&gt; show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+
4 rows in set (0.00 sec)</pre>
<p>恭喜你，已经安装成功了！</p>
<p><strong>编译Handler Socket</strong></p>
<p>cd Percona-Server-5.5.16-rel22.0/storage/HandlerSocket-Plugin-for-MySQL</p>
<p>./configure  &#8211;with-mysql-source=/home/xxx/Percona-Server-5.5.15-rel21.0 \</p>
<p>&#8211;with-mysql-bindir=/u01/mysql/bin/ &#8211;with-mysql-plugindir=/u01/mysql/lib/plugin</p>
<p>&nbsp;</p>
<p>make -j `cat /proc/cpuinfo  | grep processor | wc -l`</p>
<p>make install</p>
<p>登录到MySQL</p>
<p>mysql&gt;  INSTALL PLUGIN handlersocket SONAME &#8216;handlersocket.so&#8217;;</p>
<p><span class="Apple-style-span" style="font-family: Consolas, Monaco, monospace; font-size: 12px; line-height: 18px; white-space: pre;">mysql&gt; show plugins;</span></p>
<pre>+--------------------------------+----------+--------------------+------------------+---------+
| Name                           | Status   | Type               | Library          | License |
+--------------------------------+----------+--------------------+------------------+---------+
| binlog                         | ACTIVE   | STORAGE ENGINE     | NULL             | GPL     |
| mysql_native_password          | ACTIVE   | AUTHENTICATION     | NULL             | GPL     |
| mysql_old_password             | ACTIVE   | AUTHENTICATION     | NULL             | GPL     |
| MRG_MYISAM                     | ACTIVE   | STORAGE ENGINE     | NULL             | GPL     |
| MEMORY                         | ACTIVE   | STORAGE ENGINE     | NULL             | GPL     |
| MyISAM                         | ACTIVE   | STORAGE ENGINE     | NULL             | GPL     |
| CSV                            | ACTIVE   | STORAGE ENGINE     | NULL             | GPL     |
| BLACKHOLE                      | ACTIVE   | STORAGE ENGINE     | NULL             | GPL     |
| InnoDB                         | ACTIVE   | STORAGE ENGINE     | NULL             | GPL     |
| INNODB_RSEG                    | ACTIVE   | INFORMATION SCHEMA | NULL             | GPL     |
| INNODB_TRX                     | ACTIVE   | INFORMATION SCHEMA | NULL             | GPL     |
| INNODB_LOCKS                   | ACTIVE   | INFORMATION SCHEMA | NULL             | GPL     |
| INNODB_LOCK_WAITS              | ACTIVE   | INFORMATION SCHEMA | NULL             | GPL     |
| INNODB_CMP                     | ACTIVE   | INFORMATION SCHEMA | NULL             | GPL     |
| INNODB_CMP_RESET               | ACTIVE   | INFORMATION SCHEMA | NULL             | GPL     |
| INNODB_CMPMEM                  | ACTIVE   | INFORMATION SCHEMA | NULL             | GPL     |
| INNODB_CMPMEM_RESET            | ACTIVE   | INFORMATION SCHEMA | NULL             | GPL     |
| INNODB_SYS_TABLES              | ACTIVE   | INFORMATION SCHEMA | NULL             | GPL     |
| INNODB_SYS_TABLESTATS          | ACTIVE   | INFORMATION SCHEMA | NULL             | GPL     |
| INNODB_SYS_INDEXES             | ACTIVE   | INFORMATION SCHEMA | NULL             | GPL     |
| INNODB_SYS_COLUMNS             | ACTIVE   | INFORMATION SCHEMA | NULL             | GPL     |
| INNODB_SYS_FIELDS              | ACTIVE   | INFORMATION SCHEMA | NULL             | GPL     |
| INNODB_SYS_FOREIGN             | ACTIVE   | INFORMATION SCHEMA | NULL             | GPL     |
| INNODB_SYS_FOREIGN_COLS        | ACTIVE   | INFORMATION SCHEMA | NULL             | GPL     |
| INNODB_SYS_STATS               | ACTIVE   | INFORMATION SCHEMA | NULL             | GPL     |
| INNODB_TABLE_STATS             | ACTIVE   | INFORMATION SCHEMA | NULL             | GPL     |
| INNODB_INDEX_STATS             | ACTIVE   | INFORMATION SCHEMA | NULL             | GPL     |
| INNODB_BUFFER_POOL_PAGES       | ACTIVE   | INFORMATION SCHEMA | NULL             | GPL     |
| INNODB_BUFFER_POOL_PAGES_INDEX | ACTIVE   | INFORMATION SCHEMA | NULL             | GPL     |
| INNODB_BUFFER_POOL_PAGES_BLOB  | ACTIVE   | INFORMATION SCHEMA | NULL             | GPL     |
| XTRADB_ADMIN_COMMAND           | ACTIVE   | INFORMATION SCHEMA | NULL             | GPL     |
| FEDERATED                      | DISABLED | STORAGE ENGINE     | NULL             | GPL     |
| ARCHIVE                        | ACTIVE   | STORAGE ENGINE     | NULL             | GPL     |
| PERFORMANCE_SCHEMA             | ACTIVE   | STORAGE ENGINE     | NULL             | GPL     |
| partition                      | ACTIVE   | STORAGE ENGINE     | NULL             | GPL     |
| handlersocket                  | ACTIVE   | DAEMON             | handlersocket.so | BSD     |
+--------------------------------+----------+--------------------+------------------+---------+
36 rows in set (0.00 sec)</pre>
<pre></pre>
<p>参考资料 Cmake使用   <a href="http://forge.mysql.com/wiki/Autotools_to_CMake_Transition_Guide">http://forge.mysql.com/wiki/Autotools_to_CMake_Transition_Guide</a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://dbahacker.com/linux/mysql5-5-hs/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>binlog_format=ROW/STATEMENT/MIX   对记录不存在的对比</title>
		<link>http://dbahacker.com/linux/binlog_formatrowstatementmix-%e5%af%b9%e8%ae%b0%e5%bd%95%e4%b8%8d%e5%ad%98%e5%9c%a8%e7%9a%84%e5%af%b9%e6%af%94</link>
		<comments>http://dbahacker.com/linux/binlog_formatrowstatementmix-%e5%af%b9%e8%ae%b0%e5%bd%95%e4%b8%8d%e5%ad%98%e5%9c%a8%e7%9a%84%e5%af%b9%e6%af%94#comments</comments>
		<pubDate>Tue, 09 Aug 2011 12:51:09 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://dbahacker.com/?p=157</guid>
		<description><![CDATA[昨天一台(slave)不停的出现包含HA_ERR_KEY_NOT_FOUND的复制错误 Include/my_base.sh (376行)  #define HA_ERR_KEY_NOT_FOUND    120     /* Didn&#8217;t find key on read or update */ 翻译的意思是查询或者更新操作找不到键值，实际进行测试的时候 ，where查询条件为索引和普通列值的时候，当主库binlog_format=row的时候，slave也会报错HA_ERR_KEY_NOT_FOUND 改slave对应的主库binlog_format=ROW 2. 测试重现 v031082.sqa.cm4   搞两个mysql实例   做主备 主库 /u01/mysql 3306    binlog_format=ROW 备库 /u01/mysql2 3309  binlog_format=STATEMENT 主库 create table t1(id int ,name varchar(100); Insert into table t1 (name) value (‘mysql’); Insert into table t1 (name) value (‘hbase’); Insert into table [...]]]></description>
			<content:encoded><![CDATA[<p>昨天一台(slave)不停的出现包含HA_ERR_KEY_NOT_FOUND的复制错误</p>
<ol>
<li> Include/my_base.sh (376行)  #define HA_ERR_KEY_NOT_FOUND    120     /* Didn&#8217;t find key on read or update */</li>
</ol>
<p>翻译的意思是查询或者更新操作找不到键值，实际进行测试的时候 ，where查询条件为索引和普通列值的时候，当主库binlog_format=row的时候，slave也会报错HA_ERR_KEY_NOT_FOUND</p>
<p>改slave对应的主库binlog_format=ROW</p>
<ol>
<li><strong>2. </strong><strong>测试重现</strong><strong> </strong></li>
</ol>
<p>v031082.sqa.cm4   搞两个mysql实例   做主备</p>
<p>主库 /u01/mysql 3306    binlog_format=ROW</p>
<p>备库 /u01/mysql2 3309  binlog_format=STATEMENT</p>
<p>主库 create table t1(id int ,name varchar(100);</p>
<p>Insert into table t1 (name) value (‘mysql’);</p>
<p>Insert into table t1 (name) value (‘hbase’);</p>
<p>Insert into table t1 (name) value (‘oracle’);</p>
<p>主备库确认三条记录都在,备库清空t1表 .</p>
<p>备库 show slave status\G无告警</p>
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td colspan="3" width="869" valign="top">
<p align="center"><strong>ROW</strong><strong>和</strong><strong>STATEMENT</strong><strong>的类似操作对比</strong><strong></strong></p>
</td>
</tr>
<tr>
<td width="207" valign="top">MySQL</td>
<td width="303" valign="top">主库   Binlog_format=row</td>
<td width="359" valign="top">主库的binlog_format=MIX/statement;</td>
</tr>
<tr>
<td width="207" valign="top">v031082.sqa.cm4 3306   Master</td>
<td width="303" valign="top">delete from t1 where  ;</p>
<p>delete from t1 where   name=’hbase’;</td>
<td width="359" valign="top">Delete from t1 where   name=’mysql’</td>
</tr>
<tr>
<td width="207" valign="top">v031082.sqa.cm4 3309   Slave</td>
<td width="303" valign="top">备库此时show slave   status ;会出现</p>
<p>Could not execute   Update_rows event on table test.t1;</p>
<p>Can&#8217;t find record in   &#8216;t1&#8242;, Error_code: 1032;</p>
<p>handler error   HA_ERR_KEY_NOT_FOUND;</p>
<p>the event&#8217;s master log   mysql-bin.000001, end_log_pos 3499</td>
<td width="359" valign="top">备库没有错误信息 （目前线上大部分的MySQL 主库binlog_format=statement,如果TC迁移到MySQL，需要考虑好到底是采用MIX还是ROW）</td>
</tr>
</tbody>
</table>
<p><strong>源码剖析</strong></p>
<p><strong>storage/innodb_plugin/handler/ha_innodb.cc </strong><strong>这里包含index_read(),index_first(),</strong>index_last()函数，这些函数都会判断记录是否存在<strong></strong></p>
<p>/**********************************************************************//**</p>
<p>Positions an index cursor to the index specified in the handle. Fetches the</p>
<p>row if any.</p>
<p>@return  0, HA_ERR_KEY_NOT_FOUND, or error number */</p>
<p>UNIV_INTERN</p>
<p>Int ha_innobase::index_read(</p>
<p>case DB_RECORD_NOT_FOUND:</p>
<p>error = HA_ERR_KEY_NOT_FOUND;</p>
<p>table-&gt;status = STATUS_NOT_FOUND;</p>
<p>break;</p>
<p>}</p>
<p>/********************************************************************//**</p>
<p>Positions a cursor on the first record in an index and reads the</p>
<p>corresponding row to buf.</p>
<p>@return 0, HA_ERR_END_OF_FILE, or error code */</p>
<p>UNIV_INTERN Int ha_innobase::index_first(</p>
<p>if (error == HA_ERR_KEY_NOT_FOUND) {</p>
<p>error = HA_ERR_END_OF_FILE;</p>
<p>}</p>
<p>)</p>
<p>/********************************************************************//**</p>
<p>Positions a cursor on the last record in an index and reads the</p>
<p>corresponding row to buf.</p>
<p>@return 0, HA_ERR_END_OF_FILE, or error code */</p>
<p>UNIV_INTERN  int  ha_innobase::index_last(</p>
<p>if (error == HA_ERR_KEY_NOT_FOUND) {</p>
<p>error = HA_ERR_END_OF_FILE;</p>
<p>}</p>
<p>)</p>
]]></content:encoded>
			<wfw:commentRss>http://dbahacker.com/linux/binlog_formatrowstatementmix-%e5%af%b9%e8%ae%b0%e5%bd%95%e4%b8%8d%e5%ad%98%e5%9c%a8%e7%9a%84%e5%af%b9%e6%af%94/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQL 5.0 5.1 下InnoDB的预热方法</title>
		<link>http://dbahacker.com/mysql/mysql-5-0-5-1-%e4%b8%8binnodb%e7%9a%84%e9%a2%84%e7%83%ad%e6%96%b9%e6%b3%95</link>
		<comments>http://dbahacker.com/mysql/mysql-5-0-5-1-%e4%b8%8binnodb%e7%9a%84%e9%a2%84%e7%83%ad%e6%96%b9%e6%b3%95#comments</comments>
		<pubDate>Tue, 05 Oct 2010 07:13:10 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[InnoDB]]></category>
		<category><![CDATA[MySQL5.0]]></category>
		<category><![CDATA[MySQL5.1]]></category>

		<guid isPermaLink="false">http://dbahacker.com/?p=150</guid>
		<description><![CDATA[asdfsdfsadf0.00 creates/s, 0.00 writes/s Buffer pool hit rate 757 / 1000 &#8212;&#8212;&#8212;&#8212;&#8211; ROW OPERATIONS &#8212;&#8212;&#8212;&#8212;&#8211; 0 queries inside InnoDB, 0 queries in queue 1 read views open inside InnoDB Main thread process no. 12487, id 1157658976, state: waiting for server activity Number of rows inserted 0, updated 0, deleted 0, read 21 0.00 inserts/s, 0.00 [...]]]></description>
			<content:encoded><![CDATA[<div id="_mcePaste" style="position: absolute; overflow-x: hidden; overflow-y: hidden; width: 1px; height: 1px; top: 0px; left: -10000px;">asdfsdfsadf0.00 creates/s, 0.00 writes/s</div>
<div id="_mcePaste" style="position: absolute; overflow-x: hidden; overflow-y: hidden; width: 1px; height: 1px; top: 0px; left: -10000px;">Buffer pool hit rate 757 / 1000</div>
<div id="_mcePaste" style="position: absolute; overflow-x: hidden; overflow-y: hidden; width: 1px; height: 1px; top: 0px; left: -10000px;">&#8212;&#8212;&#8212;&#8212;&#8211;</div>
<div id="_mcePaste" style="position: absolute; overflow-x: hidden; overflow-y: hidden; width: 1px; height: 1px; top: 0px; left: -10000px;">ROW OPERATIONS</div>
<div id="_mcePaste" style="position: absolute; overflow-x: hidden; overflow-y: hidden; width: 1px; height: 1px; top: 0px; left: -10000px;">&#8212;&#8212;&#8212;&#8212;&#8211;</div>
<div id="_mcePaste" style="position: absolute; overflow-x: hidden; overflow-y: hidden; width: 1px; height: 1px; top: 0px; left: -10000px;">0 queries inside InnoDB, 0 queries in queue</div>
<div id="_mcePaste" style="position: absolute; overflow-x: hidden; overflow-y: hidden; width: 1px; height: 1px; top: 0px; left: -10000px;">1 read views open inside InnoDB</div>
<div id="_mcePaste" style="position: absolute; overflow-x: hidden; overflow-y: hidden; width: 1px; height: 1px; top: 0px; left: -10000px;">Main thread process no. 12487, id 1157658976, state: waiting for server activity</div>
<div id="_mcePaste" style="position: absolute; overflow-x: hidden; overflow-y: hidden; width: 1px; height: 1px; top: 0px; left: -10000px;">Number of rows inserted 0, updated 0, deleted 0, read 21</div>
<div id="_mcePaste" style="position: absolute; overflow-x: hidden; overflow-y: hidden; width: 1px; height: 1px; top: 0px; left: -10000px;">0.00 inserts/s, 0.00 updates/s, 0.00 deletes/s, 0.07 reads/s</div>
<div id="_mcePaste" style="position: absolute; overflow-x: hidden; overflow-y: hidden; width: 1px; height: 1px; top: 0px; left: -10000px;">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</div>
<div id="_mcePaste" style="position: absolute; overflow-x: hidden; overflow-y: hidden; width: 1px; height: 1px; top: 0px; left: -10000px;">END OF INNODB MONITOR OUTPUT</div>
<div id="_mcePaste" style="position: absolute; overflow-x: hidden; overflow-y: hidden; width: 1px; height: 1px; top: 0px; left: -10000px;">==========================MyS</div>
<p>之前在做一个项目的MySQL数据库极限压测, 有部分场景是涉及到MySQL重启的,而这个项目使用的是InnoDB存储引擎。</p>
<p>重启完毕后,一开始十几分钟的性能是非常差的,原因是因为InnoDB有innodb buffer pool(简称ibf)的概念</p>
<p>和innodb buffer pool相关的参数innodb_buffer_pool_size,size越大,可以放到内存的数据越多,而大多数的项目都会有热点数据的存在,当热点数据经过LRU算法进入到buffer pool之后,读磁盘的次数减少,读的都是内存,速度是最快的</p>
<p>问题来了,数据库一重启,热点数据都被清空,bf里面都是空的.等待app的sql请求过来让bf填满数据是一个方法,但30分钟内很难把热点数据都装载进来.</p>
<p>这个时候,我们可以采取人工预热的办法来让bf满足我们的需求</p>
<p><strong>MySQL 5.0的预热是最简单的</strong></p>
<p>方法1 : 在MySQL重启后 执行 SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES,经过我在一台5.0MySQL的实验 在重启后查看show innodb status\G 和执行完这条语句后 Free buffers的页数会减少.</p>
<p>这个count语句有何作用呢?InnoDB的存储格式和MyISAM不一样, innodb会在mysql启动后的第一次访问表的时候,统计表的索引基数等相关信息,如果表很多的话,这也是一个巨大的开销.所以在正式提供服务之前,就把表打开,放入到bp里面</p>
<p><strong>MySQL 5.1的数据预热</strong></p>
<p>我在一台5.1.48的MySQL进行了重启,测试了同样的SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES 但发现free buffers的页数没有变少，情况和mysqlperformanceblog.com作者所说的一样&#8211;这个方法在5.1之后就无法达到我们的需求了</p>
<p>可以采用另外一种方法:获得数据库里面的库和对应的表，来进行预热，核心代码是这一句</p>
<p>SELECT table_schema, table_name FROM information_schema.tables</p>
<p>可以用perl或者python来获取库和表 然后执行 select * from db.table limit 1 来实现我们的方法</p>
<p>最后提一下,我们可以再my.cnf 加入init-file=/mysql/init.sql ，在每次mysql重启的时候就自动执行这个预热的sql  当然了 sql是要我们自己生成的哦</p>
]]></content:encoded>
			<wfw:commentRss>http://dbahacker.com/mysql/mysql-5-0-5-1-%e4%b8%8binnodb%e7%9a%84%e9%a2%84%e7%83%ad%e6%96%b9%e6%b3%95/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>公司的社招培训第一天收获</title>
		<link>http://dbahacker.com/life/fish</link>
		<comments>http://dbahacker.com/life/fish#comments</comments>
		<pubDate>Tue, 14 Sep 2010 13:43:03 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[生活点滴]]></category>

		<guid isPermaLink="false">http://dbahacker.com/?p=139</guid>
		<description><![CDATA[这一周的周二到周四都是参加公司的社招新人培训,今天给我们分享的有淘宝的业务介绍,工程师@淘宝 by(文初) ， 毕玄给我们讲淘宝架构介绍&#38;未来发展，以及伏威给我们分享 用户体验，速度，稳定，成本&#8211;四个关键词 淘宝的业务介绍，是一位消费者事业部的产品经理给我们分享，其中一个问题让我印象非常深刻，淘宝有一年的在线交易总额KPI是1000亿，但实际只有达到的是999.4亿，相差了0.6亿，去了哪里？是因为临近过年之前，交易量瞬间上升，系统抗不住，服务不可用的时间非常长，从而导致了当年的KPI没有100%实现，上课的时候听到这个情况，心情挺不好受的，也感觉压力很大.这个培训，我觉得最大的收获是了解了前人的一些痛苦，自己来听一番，也感受这个过程，以后在工作的时候对类似的情况有所考虑 第二位给我们做分享的是放翁,工程师@淘宝的话题。认识文初，我依稀记得是大三的时候在javaeye.com看到他的博客,从他的博客文章，感觉他是沟通能力非常强的技术高手，当年的我，也没想到可以一睹他的风采。今天他全程的分享都是脱稿，而条理也非常清晰。他所分享的内容我做了记录： 1. 工程师如何把事情做到极致&#8211;把所负责的事情产品化，记录下来分享，不用怕吃亏 2.责任: 产品责任，关注自己的客户的需求，提前想到他们会有什么样的疑惑 3.心态: 在淘宝，你会发现你很忙，如果没有一个良好的心态，很容易把自己给压垮 4.沟通: 今天你给别人什么态度，明天别人就会给你什么态度。 5.时间管理：首先要和清晰的知道，自己今天要完成什么;不要做万金油,懂得让别人知道怎样解决问题，选择好的方式去帮助别人 放翁的分享很精彩，营养很好.值得好好的记录下来 下午是毕玄给我们做淘宝架构&#38;未来发展,分享了淘宝的v1,v2,v3架构的优势和缺点不足。毕玄是淘宝秒杀活动的技术方案提供者 ，具体可以看这篇文章  http://www.aliresearch.com/viewpoint/6774/ 。 v1阶段 采用了外国的技术方案来进行，一开始业务不是非常庞大，也勉强维持的过去 v2阶段,业务开始激增，整个淘宝的代码都放在一个工程，每次打包都要个20多分钟，大家都可以修改代码，数据都在一个数据库里面，日子过得不轻松 v3阶段，也就是目前我们的所在阶段，一个关键词&#8211;拆分 。从上层开始，拆应用，拆项目，产生各种各种的中间件，tfs,taif,notify,hsf,tddl，数据库分库分表，分机房。分布式的一个好处是，挂了一个子节点，其他节点还可以顶住其他的业务，鸡蛋没有放在同一个篮子。但也带来一个难题&#8211;应用拆分了，数据库拆分了，一大堆中间件，互相的依赖非常强，随便哪个子系统出了问题，都可能导致一对服务不可用。鸡蛋没有在同一个篮子里面，分散放，某个地方不小心，就打烂一两个鸡蛋了。 最后的是伏威给我们分享2010年淘宝的技术方面的四个关键词: 用户体验，速度，稳定，成本.  其实有3个词，我认为都是和v3阶段的拆分有关系,分别是用户体验，稳定，成本。 用户体验和稳定:  这两个词其实有非常大的关系，系统不稳定，用户访问不了网站，用户体验就非常糟糕了。 成本: 分布式和拆分所带来的，就是设备数量的激增，从而带来各种各样的成本问题，机柜，服务器，内存，cpu，人力成本等等 今天的分享，既有经验的收获，也带给了我思考,比如放翁所提到的责任精神，比如毕玄所提到的未来10w级别的服务器，如何智能化管理，还有伏威所提到的四个关键词，这些点，对于我自己的工作，应该也是需要加以注意并做好的，而这，就是我的工作的意义所在”个人能力得到提升，所做的事情解决了已有的问题，证明自己的价值”]]></description>
			<content:encoded><![CDATA[<p>这一周的周二到周四都是参加公司的社招新人培训,今天给我们分享的有淘宝的业务介绍,工程师@淘宝 by(<a href="http://blog.csdn.net/cenwenchu79" target="_blank">文初</a>) ， <a href="http://bluedavy.com/" target="_blank">毕玄</a>给我们讲淘宝架构介绍&amp;未来发展，以及伏威给我们分享 用户体验，速度，稳定，成本&#8211;四个关键词</p>
<p>淘宝的业务介绍，是一位消费者事业部的产品经理给我们分享，其中一个问题让我印象非常深刻，淘宝有一年的在线交易总额KPI是1000亿，但实际只有达到的是999.4亿，相差了0.6亿，去了哪里？是因为临近过年之前，交易量瞬间上升，系统抗不住，服务不可用的时间非常长，从而导致了当年的KPI没有100%实现，上课的时候听到这个情况，心情挺不好受的，也感觉压力很大.这个培训，我觉得最大的收获是了解了前人的一些痛苦，自己来听一番，也感受这个过程，以后在工作的时候对类似的情况有所考虑</p>
<p>第二位给我们做分享的是放翁,工程师@淘宝的话题。认识文初，我依稀记得是大三的时候在javaeye.com看到他的博客,从他的博客文章，感觉他是沟通能力非常强的技术高手，当年的我，也没想到可以一睹他的风采。今天他全程的分享都是脱稿，而条理也非常清晰。他所分享的内容我做了记录：</p>
<p>1. 工程师如何把事情做到极致&#8211;把所负责的事情产品化，记录下来分享，不用怕吃亏</p>
<p>2.责任: 产品责任，关注自己的客户的需求，提前想到他们会有什么样的疑惑</p>
<p>3.心态: 在淘宝，你会发现你很忙，如果没有一个良好的心态，很容易把自己给压垮</p>
<p>4.沟通: 今天你给别人什么态度，明天别人就会给你什么态度。</p>
<p>5.时间管理：首先要和清晰的知道，自己今天要完成什么;不要做万金油,懂得让别人知道怎样解决问题，选择好的方式去帮助别人</p>
<p>放翁的分享很精彩，营养很好.值得好好的记录下来</p>
<p>下午是毕玄给我们做淘宝架构&amp;未来发展,分享了淘宝的v1,v2,v3架构的优势和缺点不足。毕玄是淘宝秒杀活动的技术方案提供者 ，具体可以看这篇文章  <a href="http://www.aliresearch.com/viewpoint/6774/">http://www.aliresearch.com/viewpoint/6774/</a> 。</p>
<p>v1阶段 采用了外国的技术方案来进行，一开始业务不是非常庞大，也勉强维持的过去</p>
<p>v2阶段,业务开始激增，整个淘宝的代码都放在一个工程，每次打包都要个20多分钟，大家都可以修改代码，数据都在一个数据库里面，日子过得不轻松</p>
<p>v3阶段，也就是目前我们的所在阶段，一个关键词&#8211;拆分 。从上层开始，拆应用，拆项目，产生各种各种的中间件，tfs,taif,notify,hsf,tddl，数据库分库分表，分机房。分布式的一个好处是，挂了一个子节点，其他节点还可以顶住其他的业务，鸡蛋没有放在同一个篮子。但也带来一个难题&#8211;应用拆分了，数据库拆分了，一大堆中间件，互相的依赖非常强，随便哪个子系统出了问题，都可能导致一对服务不可用。鸡蛋没有在同一个篮子里面，分散放，某个地方不小心，就打烂一两个鸡蛋了。</p>
<p>最后的是伏威给我们分享2010年淘宝的技术方面的四个关键词: 用户体验，速度，稳定，成本.  其实有3个词，我认为都是和v3阶段的拆分有关系,分别是用户体验，稳定，成本。</p>
<p>用户体验和稳定:  这两个词其实有非常大的关系，系统不稳定，用户访问不了网站，用户体验就非常糟糕了。</p>
<p>成本: 分布式和拆分所带来的，就是设备数量的激增，从而带来各种各样的成本问题，机柜，服务器，内存，cpu，人力成本等等</p>
<p>今天的分享，既有经验的收获，也带给了我思考,比如放翁所提到的责任精神，比如毕玄所提到的未来10w级别的服务器，如何智能化管理，还有伏威所提到的四个关键词，这些点，对于我自己的工作，应该也是需要加以注意并做好的，而这，就是我的工作的意义所在”个人能力得到提升，所做的事情解决了已有的问题，证明自己的价值”</p>
]]></content:encoded>
			<wfw:commentRss>http://dbahacker.com/life/fish/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQL InnoDB 崩溃恢复过程  前言</title>
		<link>http://dbahacker.com/mysql/mysql-innodb-%e5%b4%a9%e6%ba%83%e6%81%a2%e5%a4%8d%e8%bf%87%e7%a8%8b-%e5%89%8d%e8%a8%80</link>
		<comments>http://dbahacker.com/mysql/mysql-innodb-%e5%b4%a9%e6%ba%83%e6%81%a2%e5%a4%8d%e8%bf%87%e7%a8%8b-%e5%89%8d%e8%a8%80#comments</comments>
		<pubDate>Thu, 09 Sep 2010 01:02:06 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://dbahacker.com/?p=134</guid>
		<description><![CDATA[最近一个正在进行的项目，性能测试场景中包含MySQL 为较大压力的应用程序提供服务，Linux服务器CPU占用100% ，OS 不可用，我写了一个吃CPU的shell脚本来不断的跑，结果把服务器跑挂了，手动重启了服务器后，发现MySQL起来的时间需要非常长，为大家所不能接受 MySQL相关信息   5.0.67    InnoDB Buffer Pool Size为36G  ,innodb_flush_log_at_trx_commit = 1，innodb_log_file_size = 900M ，当时候的服务器情况比较糟糕，CPU占用100% ，ssh也登录不进去，维持了一段时间后才进行重启，所以没有收集到最重要的崩溃之前的MySQL内部信息   整个的恢复过程用了6个小时 这个时候，引发了我们的反思: 1. 我们的MySQL压测模型没有针对不同版本的MySQL进行崩溃恢复压测  所以出现这个崩溃恢复的问题，我们只能补回来这个测试，针对不同版本的MySQL(MySQL 5.0.67 和MySQL5.1.xx)，需要进行相同TPS的场景下进行kill -9  pid (mysqld)的测试，掌握一手的崩溃恢复时间，为将来线上出现MySQL崩溃，做最好的准备 2. 我自己对MySQL InnoDB崩溃恢复的过程不是非常了解,导致MySQL崩溃之前没有去采集有参考价值的数值，这点需要加把劲 这一篇是前言，下一篇，我会对MySQL InnoDB的崩溃恢复过程做详细的介绍]]></description>
			<content:encoded><![CDATA[<p>最近一个正在进行的项目，性能测试场景中包含MySQL 为较大压力的应用程序提供服务，Linux服务器CPU占用100% ，OS 不可用，我写了一个吃CPU的shell脚本来不断的跑，结果把服务器跑挂了，手动重启了服务器后，发现MySQL起来的时间需要非常长，为大家所不能接受</p>
<p>MySQL相关信息   5.0.67    InnoDB Buffer Pool Size为36G  ,innodb_flush_log_at_trx_commit = 1，innodb_log_file_size = 900M</p>
<p>，当时候的服务器情况比较糟糕，CPU占用100% ，ssh也登录不进去，维持了一段时间后才进行重启，所以没有收集到最重要的崩溃之前的MySQL内部信息   整个的恢复过程用了6个小时</p>
<p><strong>这个时候，引发了我们的反思:</strong></p>
<p>1. 我们的MySQL压测模型没有针对不同版本的MySQL进行崩溃恢复压测  所以出现这个崩溃恢复的问题，我们只能补回来这个测试，针对不同版本的MySQL(MySQL 5.0.67 和MySQL5.1.xx)，需要进行相同TPS的场景下进行kill -9  pid (mysqld)的测试，掌握一手的崩溃恢复时间，为将来线上出现MySQL崩溃，做最好的准备</p>
<p>2. 我自己对MySQL InnoDB崩溃恢复的过程不是非常了解,导致MySQL崩溃之前没有去采集有参考价值的数值，这点需要加把劲</p>
<p>这一篇是前言，下一篇，我会对<strong>MySQL InnoDB的崩溃恢复过程</strong>做详细的介绍</p>
]]></content:encoded>
			<wfw:commentRss>http://dbahacker.com/mysql/mysql-innodb-%e5%b4%a9%e6%ba%83%e6%81%a2%e5%a4%8d%e8%bf%87%e7%a8%8b-%e5%89%8d%e8%a8%80/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

