明明白白你的Linux服务器-硬件篇
[ 2010-12-11 00:41:32 | 作者: admin ]
《明明白白你的Linux服务器》系列的第一篇
一、如何查看服务器的CPU
今天安装了9台Linux服务器,型号完全不一样(有DELL、HP和IBM服务器),又懒得去对清单,如何在Linux下cpu的个数和核数呢?另外,nginx的cpu工作模式也需要确切的知道linux服务器到底有多少个逻辑cpu,不过现在服务器那是相当的彪悍,直接上worker_processes 8吧。
判断依据:
1.具有相同core id的cpu是同一个core的超线程。(Physical id and core id are not necessarily consecutive but they are unique. Any cpu with the same core id are hyperthreads in the same core.)
2.具有相同physical ...
阅读全文…
一、如何查看服务器的CPU
今天安装了9台Linux服务器,型号完全不一样(有DELL、HP和IBM服务器),又懒得去对清单,如何在Linux下cpu的个数和核数呢?另外,nginx的cpu工作模式也需要确切的知道linux服务器到底有多少个逻辑cpu,不过现在服务器那是相当的彪悍,直接上worker_processes 8吧。
判断依据:
1.具有相同core id的cpu是同一个core的超线程。(Physical id and core id are not necessarily consecutive but they are unique. Any cpu with the same core id are hyperthreads in the same core.)
2.具有相同physical ...
阅读全文…
linux下TIME_WAIT过多的解决办法(ip_local_port_range)
[ 2010-12-11 00:19:03 | 作者: admin ]
p.s. 最近nginx不正常,表现为首次打开的时候会很慢或者干脆打不开,要刷新下才能继续。fast-cgi的TIME_WAIT比较多5百左右,占到总连接4分之1。试试是不是ip_local_port_range问题,原则就是不与本地已经使用的端口范围冲突,设置端口 2**** 到 4**** 。 (重启系统需要重新设置)
如果使用了nginx代理,那么系统TIME_WAIT的数量会变得比较多,这是由于nginx代理使用了短链接的方式和后端交互的原因,使得nginx 和后端的ESTABLISHED变得很少而TIME_WAIT很多。这不但发生在安装nginx的代理服务器上,而且也会使后端的app服务器上有大量的 TIME_WAIT。查阅TIME_WAIT资料,发现这个状态很多也没什么大问题,但可能因为它占用了系统过多的端口,导致后续的请求无法获取端口而造成障碍。
...
阅读全文…
如果使用了nginx代理,那么系统TIME_WAIT的数量会变得比较多,这是由于nginx代理使用了短链接的方式和后端交互的原因,使得nginx 和后端的ESTABLISHED变得很少而TIME_WAIT很多。这不但发生在安装nginx的代理服务器上,而且也会使后端的app服务器上有大量的 TIME_WAIT。查阅TIME_WAIT资料,发现这个状态很多也没什么大问题,但可能因为它占用了系统过多的端口,导致后续的请求无法获取端口而造成障碍。
...
阅读全文…
修改CentOS默认的目录颜色(很暗),命令行模式
[ 2010-12-10 20:23:46 | 作者: admin ]
复制 /etc/DIR_COLORS 到 ~/.dircolors ,然后重新登录即可。
如root用户:
如root用户:
cp /etc/DIR_COLORS /root/.dircolors
MySQl之open_table与opened_table的区别讲解
[ 2010-12-10 16:02:38 | 作者: admin ]
好多人在调优Mysql的时候,总是对open_tables和opend_tables两个参数分别不清。
网上好多解释都是这样的:
open_tables:当前打开表的数量
opened_tables:当前已经打开表的数量
很简单的解释,可是这两句话看起来有点类似。
下面我来解释一下:
open_tables:是当前在缓存中打开表的数量。
opened_tables:是mysql自启动起,打开表的数量。
我们知道,假如没有缓存的话,那么mysql服务在每次执行一个语句的时候,都会先打开一个表。当sql语句执行完成后,则把这个表关掉。这就是opend_tables中的值。而,open_tables这个值,是mysql在使用缓存的情况下,存储在缓存中的表的个数。
我们可以这样做实验:执行flush tables;这个命令是mysql用来刷新缓存的。当这个命令执行后,我们会看到
...
阅读全文…
网上好多解释都是这样的:
open_tables:当前打开表的数量
opened_tables:当前已经打开表的数量
很简单的解释,可是这两句话看起来有点类似。
下面我来解释一下:
open_tables:是当前在缓存中打开表的数量。
opened_tables:是mysql自启动起,打开表的数量。
我们知道,假如没有缓存的话,那么mysql服务在每次执行一个语句的时候,都会先打开一个表。当sql语句执行完成后,则把这个表关掉。这就是opend_tables中的值。而,open_tables这个值,是mysql在使用缓存的情况下,存储在缓存中的表的个数。
我们可以这样做实验:执行flush tables;这个命令是mysql用来刷新缓存的。当这个命令执行后,我们会看到
...
阅读全文…
MySQL的my.cnf优化实例
[ 2010-12-10 10:57:42 | 作者: admin ]
MySQL的my.cnf优化实例
我从网上找到的,我刚看了一下,还算不错,发在这里,大家看看,最好有牛人补充完善
然后,再整理整理!
========================================
在Apache, PHP, MySQL的体系架构中,MySQL对于性能的影响最大,也是关键的核心部分。对于Discuz!论坛程序也是如此,MySQL的设置是否合理优化,直接影响到论坛的速度和承载量!同时,MySQL也是优化难度最大的一个部分,不但需要理解一些MySQL专业知识,同时还需要长时间的观察统计并且根据经验进行判断,然后设置合理的参数。
下面我们了解一下MySQL优化的一些基础,MySQL的优化我分为两个部分,一是服务器物理硬件的优化;二是MySQL自身(my.cnf)的优化。
(1) 服务器硬件对MySQL性能的影响
a) 磁盘寻道能力(磁盘I/O),以目前高转速...
阅读全文…
我从网上找到的,我刚看了一下,还算不错,发在这里,大家看看,最好有牛人补充完善
然后,再整理整理!
========================================
在Apache, PHP, MySQL的体系架构中,MySQL对于性能的影响最大,也是关键的核心部分。对于Discuz!论坛程序也是如此,MySQL的设置是否合理优化,直接影响到论坛的速度和承载量!同时,MySQL也是优化难度最大的一个部分,不但需要理解一些MySQL专业知识,同时还需要长时间的观察统计并且根据经验进行判断,然后设置合理的参数。
下面我们了解一下MySQL优化的一些基础,MySQL的优化我分为两个部分,一是服务器物理硬件的优化;二是MySQL自身(my.cnf)的优化。
(1) 服务器硬件对MySQL性能的影响
a) 磁盘寻道能力(磁盘I/O),以目前高转速...
阅读全文…
mysql下的insert/replace into/update/delete
[ 2010-12-10 09:16:49 | 作者: admin ]
p.s. 容易弄错的是replace into,当主键存在时,它不是更新一部分字段,而是先删除再插入一条记录
MySQL中replace into有三种写法:
1、如果发现表中已经有此行数据(根据主键或者唯一索引判断)则先删除此行数据,然后插入新的数据。
2、否则,直接插入新数据。
要注意的是:插入数据的表必须有主键或者是唯一索引!否则的话,replace into 会直接插入数据,这将导致表中出现重复的数据。
...
阅读全文…
MySQL中replace into有三种写法:
replace into table(col, ...) values(...)
replace into table(col, ...) select ...
replace into table set col=value, ...
replace into 跟 insert 功能类似,不同点在于:replace into 首先尝试插入数据到表中。replace into table(col, ...) select ...
replace into table set col=value, ...
1、如果发现表中已经有此行数据(根据主键或者唯一索引判断)则先删除此行数据,然后插入新的数据。
2、否则,直接插入新数据。
要注意的是:插入数据的表必须有主键或者是唯一索引!否则的话,replace into 会直接插入数据,这将导致表中出现重复的数据。
...
阅读全文…
mysql insert的几点性能分析(DELAYED 、IGNORE)
[ 2010-12-10 09:08:35 | 作者: admin ]
INSERT语法 INSERT [LOW_PRIORITY |DELAYED| HIGH_PRIORITY] [IGNORE] [INTO]tbl_name[(col_name,...)] VALUES ({expr| DEFAULT},…),(…),…
[ON DUPLICATE KEY updatecol_name=expr, ... ]
或:
INSERT [LOW_PRIORITY |DELAYED| HIGH_PRIORITY] [IGNORE]
[INTO]tbl_name
SETcol_name={expr| DEFAULT}, …
[ON DUPLICATE KEY updatecol_name=expr, ... ]
或:
INSERT [LOW_PRIORITY | HIGH_PRIORITY] [IGNORE]
...
阅读全文…
[ON DUPLICATE KEY updatecol_name=expr, ... ]
或:
INSERT [LOW_PRIORITY |DELAYED| HIGH_PRIORITY] [IGNORE]
[INTO]tbl_name
SETcol_name={expr| DEFAULT}, …
[ON DUPLICATE KEY updatecol_name=expr, ... ]
或:
INSERT [LOW_PRIORITY | HIGH_PRIORITY] [IGNORE]
...
阅读全文…
mysql用low_priority降低update优先级,而不锁定表
[ 2010-12-10 08:31:14 | 作者: admin ]
UPDATE [LOW_PRIORITY] tbl_name SET col_name1=expr1,col_name2=expr2,...
[WHERE where_definition] [LIMIT #]
MySQL查询优化系列讲座之调度和锁定
前面的部分主要是聚焦于如何让单独的查询执行的速度更快。MySQL还允许你改变语句调度的优先级,它可以使来自多个客户端的查询更好地协作,这样单个客 户端就不会由于锁定而等待很长时间。改变优先级还可以确保特定类型的查询被处理得更快。这一部分讲解MySQL的默认的调度策略和可以用来影响这些策略的 选项。它还谈到了并发性插入操作的使用和存储引擎锁定层次对客户端的并发性的影响。为了讨论的方便,我们把执行检索(SELECT)的客户端称为"读取 者",把执行修改操作(DELETE、INSERT、REPLACE或UPDATE)的客户端称为"写入者"。
MySQL的默认的调度策略可用总结如下:
...
阅读全文…
[WHERE where_definition] [LIMIT #]
MySQL查询优化系列讲座之调度和锁定
前面的部分主要是聚焦于如何让单独的查询执行的速度更快。MySQL还允许你改变语句调度的优先级,它可以使来自多个客户端的查询更好地协作,这样单个客 户端就不会由于锁定而等待很长时间。改变优先级还可以确保特定类型的查询被处理得更快。这一部分讲解MySQL的默认的调度策略和可以用来影响这些策略的 选项。它还谈到了并发性插入操作的使用和存储引擎锁定层次对客户端的并发性的影响。为了讨论的方便,我们把执行检索(SELECT)的客户端称为"读取 者",把执行修改操作(DELETE、INSERT、REPLACE或UPDATE)的客户端称为"写入者"。
MySQL的默认的调度策略可用总结如下:
...
阅读全文…