从手册的"6.4.8. How MySQL Opens and Closes Tables"可以了解到,每打开一个MyISAM表,就需要使用2个文件描述符,咱们来验证一下。
1. 重启mysqld
/etc/init.d/mysql restart
2. 看看打开了几个文件
lsof | grep /home/mysql ... mysqld 24349 mysql 5u unix 0x000001041e8de040 4244009 /home/mysql/mysql.sock mysqld 24349 mysql 6u REG 8,33 2048 30425188 /home/mysql/mysql/host.MYI mysqld 24349 mysql 7u REG 8,33 0 30425189 /home/mysql/mysql/host.MYD mysqld 24349 mysql 8u REG 8,33 2048 30425153 /home/mysql/mysql/user.MYI mysqld 24349 mysql 9u REG 8,33 892 30425155 /home/mysql/mysql/user.MYD mysqld 24349 mysql 10u REG 8,33 5120 30425126 /home/mysql/mysql/db.MYI mysqld 24349 mysql 11u REG 8,33 3080 30425148 /home/mysql/mysql/db.MYD mysqld 24349 mysql 12u REG 8,33 4096 30425154 /home/mysql/mysql/tables_priv.MYI mysqld 24349 mysql 13u REG 8,33 0 30425157 /home/mysql/mysql/tables_priv.MYD mysqld 24349 mysql 14u REG 8,33 4096 30425143 /home/mysql/mysql/columns_priv.MYI mysqld 24349 mysql 15u REG 8,33 0 30425156 /home/mysql/mysql/columns_priv.MYD mysqld 24349 mysql 16u REG 8,33 4096 30425127 /home/mysql/mysql/procs_priv.MYI mysqld 24349 mysql 17u REG 8,33 0 30425136 /home/mysql/mysql/procs_priv.MYD mysqld 24349 mysql 18u REG 8,33 1024 30425173 /home/mysql/mysql/servers.MYI mysqld 24349 mysql 19u REG 8,33 0 30425174 /home/mysql/mysql/servers.MYD mysqld 24349 mysql 20u REG 8,33 2048 30425182 /home/mysql/mysql/event.MYI mysqld 24349 mysql 21u REG 8,33 0 30425183 /home/mysql/mysql/event.MYD ...
可以看到,总共打开了8个表,每个表分别有2个文件描述符,看来没错。
3. 再来看 status 结果
mysql>show global status like 'open_%'; +------------------------+-------+ | Variable_name | Value | +------------------------+-------+ | Open_files | 17 | | Open_streams | 0 | | Open_table_definitions | 15 | | Open_tables | 8 | | Opened_files | 52 | | Opened_tables | 15 | +------------------------+-------+
4. flush tables 后再看看
mysql>flush tables; mysql> show global status like 'open_%'; +------------------------+-------+ | Variable_name | Value | +------------------------+-------+ | Open_files | 1 | | Open_streams | 0 | | Open_table_definitions | 0 | | Open_tables | 0 | | Opened_files | 52 | | Opened_tables | 15 | +------------------------+-------+
lsof | grep /home/mysql ... mysqld 24349 mysql 5u unix 0x000001041e8de040 4244009 /home/mysql/mysql.sock mysqld 24349 mysql 22u unix 0x00000102378ff980 4244128 /home/mysql/mysql.sock ...
可以看到,flush 之后,所有的文件描述符都释放了。
通过测试可以得知,另一个打开的文件描述符是 slow query log所用。
如果是有大量的 MyISAM 表,那么就需要特别注意打开文件数是否会超出限制了。
接下来仔细了解下这个最大文件数相关的参数:
table_cache (新版本改成了 table_open_cache) The number of cached open tables. open_files_limit If this is not 0, then mysqld will use this value to reserve file descriptors to use with setrlimit(). If this value is 0 then mysqld will reserve max_connections*5 or max_connections + table_cache*2 (whichever is larger) number of files.
如果 open_files_limit 不是设置为 0,则以 setrlimit() 函数计算后的结果为准,如果设置为 0,则实际值是 max_connections*5 或 max_connections + table_cache*2 中的最大者。
因此,想要解决打开文件数超限的问题,还需要综合系统内核限制(ulimit -n),mysqld自身限制(open_files_limit),以及表缓存数(table_open_cache)等多方面因素。
不过,实际测试中,发现却不是这样的,open_files_limit采用了内核的最大限制,而非上面的计算结果。
1. 查看内核限制
ulimit -n 65535
2. 修改 my.cnf 限制
vi /etc/my.cnf ... open_files_limit = 10000 ...
3. 重启 mysqld
/etc/init.d/mysql restart
4. 查看结果
mysql>show global variables like '%open%'; | open_files_limit | 65535 | | table_open_cache | 1000 |
5. 不设置 open_files_limit 看看
vi /etc/my.cnf ... #open_files_limit = 10000 ...
重启
/etc/init.d/mysql restart
查看
mysql>show global variables like '%open%'; | open_files_limit | 65535 | | table_open_cache | 1000 |
而这个时候,按计算公式结果如下:
| max_connections | 100 | | table_open_cache | 1000 |
来计算一下:
max_open_files_1 = max_connections + table_cache * 2 = 100 + 1000 * 2 = 2100 max_open_files_2 = max_connections*5 = 100 * 5 = 500
6. 修改 ulimit 试试看:
unlimit -n 5000
vi /etc/my.cnf ... open_files_limit = 10000 ...
/etc/init.d/mysql restart
mysql>show global variables like '%open%'; | open_files_limit | 10000 | | table_open_cache | 1000 |
open_files_limit 比内核最大限制数还大,因此以 open_files_limit 为准。
vi /etc/my.cnf ... #open_files_limit = 10000 ...
/etc/init.d/mysql restart
mysql>show global variables like '%open%'; | open_files_limit | 5000 | | table_open_cache | 1000 |
看到了,变成了新的内核最大限制
看到了吧,结果完全跟文档描述的以及mysql源码中写的不一样,看来预编译版本有些地方不太可靠啊 :(
以上测试在mysql 5.1.23-rc(预编译), mysql-5.1.24-rc(自编译) 以及 5.0.45(预编译) 均一样。
uname -a Linux s1.yejr.com 2.6.9-55.ELsmp #1 SMP Fri Apr 20 16:36:54 EDT 2007 x86_64 x86_64 x86_64 GNU/Linux mysql> select version(); +---------------+ | version() | +---------------+ | 5.1.23-rc-log | +---------------+
昨天小容在讲Peter Morville的故事之时,提到了他的第一本书《信息架构——Web应用》,O’ Reilly 出版公司在出版这本书的时候挑选了北极熊为封面。小容在贴子的末尾对这个事情做了注解。
选用动物作为IT图书的封面,是O’ Reilly 出版公司的一个独特传统。小容收集了许多这个话题的素材,正计划写一篇关于O’ Reilly 出版公司如何创造独特品牌识别的文章,不过这篇文章的写作计划排得比较后,各位需要慢慢等待。不过,这两天的贴子在写Peter Morville的事情,今天也继续从品牌视觉识别角度来讨论一下。
• Semantic工作室的名称
Peter Morville的工作室的名字叫做Semantic Studios,这个名字其实有些不妥当,Semantic Web(语义网)是一个业界的通用词。Semantic Studios这样的名字总给人是从事Semantic Web(语义网)有关的工作,这和Peter Morville的实际工作不符合。虽然,信息架构从抽象的意义层面来看,的确“Semantic”蛮符合的,可是,因为行业里的人们已经将Semantic和Web连在一起用。所以使用Semantic来作为工作室名称,还是会造成一些误区,而且因为和通用词接近,从而容易在人们的大脑里掉进信息的海洋。
• Semantic Studios的品牌视觉识别
从Semantic Studios的网站来看,Peter Morville没有为工作室设计一个标志,只是将Semantic Studios的名字放在网站上,而且,这个名字看起来也不像是经过特意设计的品牌标准字。 整个网站设计非常简单,使用橘红色为主基调。可以说,这个主基调就是Semantic Studios的一个重要的品牌视觉识别了。
• 将猴子作为吉祥物
不过,如果我们去看Peter Morville在Slideshare.net上发布出来的ppt看,显然他已经将O’ Reilly 出版公司在《随意搜寻》(Ambient Findability)图书封面里用的猴子做为自己工作室的吉祥物来使用。
这个猴子不是普通的猴子,它的名字叫做Verreaux’s sifaka (Propithecus verreauxi,維氏冕狐猴),中文维基百科上的这个词条如下:
維氏冕狐猴
维基百科,自由的百科全书
保护现状:易危 (IUCN) [1]
界:動物界 Animalia
门:脊索動物門 Chordata
纲:哺乳纲 Mammalia
目:灵长目 Primates
科:大狐猴科 Indriidae
屬:冕狐猴属 Propithecus
種:維氏冕狐猴 P. verreauxi維氏冕狐猴(学名 Propithecus verreauxi)是冕狐猴属的一种。它们居住在马达加斯加雨林、西部干燥落叶林和干燥针叶林中。体毛较厚而柔软,通常为白色,头顶、四肢和身体两侧则为褐色。与其他冕狐猴一样,它们的尾巴很长,用于平衡树丛之间的跳跃。 維氏冕狐猴一般以小规模的群体生活,早晨和黄昏时分出外觅食,白天时间则主要用于休息。
Peter Morville将这只猴子从图书封面里抓下来,和Semantic Studios网站上的橘红色条组合在一起,用在PPT上,看起来两者搭配起来很和谐。不晓得Peter Morville是否将这样的搭配继续延用到名片、信封、信纸等其他地方,将它正式升华为品牌视觉识别战略。O’ Reilly 出版公司的动物图书,看来还可以起到为作者开发个人视觉识别资产的作用,这倒是一个非常意外的发现。
对于许多专业服务人士来说,工作室基本上依靠以个人品牌来带动业务发展,在他们的眼里,工作室的品牌识别设计上,似乎显得不是那么重要。 这是一个很有意思的现象,专业服务人士会向客户极力推荐自己所擅长领域的专业服务,强调专业服务的价值。然而,当他们自己变成客户的时候,对于其他领域的专业服务,却没有足够的重视,这看起来有些叶公好龙的感觉。
相关文章:
四月 2008 | ||||||
一 | 二 | 三 | 四 | 五 | 六 | 日 |
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |