浏览模式: 普通 | 列表

nginx 的 tcp_nopush 和 tcp_nodelay

[ 2010-12-11 00:51:15 | 作者: admin ]
TCP_NODELAY 和 TCP_CORK,
这两个选项都对网络连接的行为具有重要的作用。许多UNIX系统都实现了TCP_NODELAY选项,但是,TCP_CORK则是Linux系统所独有的 而且相对较新;它首先在内核版本2.4上得以实现。此外,其他UNIX系统版本也有功能类似的选项,值得注意的是,在某种由BSD派生的系统上的 TCP_NOPUSH选项其实就是TCP_CORK的一部分具体实现。
TCP_NODELAY和TCP_CORK基本上控制了包的“Nagle化”,Nagle化在这里的含义是采用Nagle算法把较小的包组装为更大的帧。 John Nagle是Nagle算法的发明人,后者就是用他的名字来命名的,他在1984年首次用这种方法来尝试解决福特汽车公司的网络拥塞问题(欲了解详情请参 看IETF RFC 896)。他解决的问题就是所谓的silly window syndrome ...

阅读全文…

日志安全与分析

[ 2010-12-11 00:47:46 | 作者: admin ]
日志对于安全来说,非常重要,它记录了系统每天发生的各种各样的事情,你可以通过他来检查错误发生的原因,或者受到攻击时攻击者留下的痕迹。日志主要的功能有:审计和监测。他还可以实时的监测系统状态,监测和追踪侵入者等等。正因为如此,抚琴煮酒特的将它整理成一篇比重跟硬件篇、网络篇并列的文章,作为《明明白白你的Linux服务器》系列的第三篇,希望大家能从中学习到对自己有用的东西。
一、配置syslog(gyl4802959同学撰写)
目前,linux依旧使用syslogd作为日志监控进程,对其进行必要的配置能减少很多麻烦,并且可更有效的从系统日志监控到系统的状态。理解并完善一个syslog的配置,对于系统管理员来说显得尤为重要。

/etc/syslog.conf根据如下的格式定义规则: facility.level action

设备.优先级 动作facility.level 字段也被称为sele...

阅读全文…

明明白白你的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 ...

阅读全文…
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资料,发现这个状态很多也没什么大问题,但可能因为它占用了系统过多的端口,导致后续的请求无法获取端口而造成障碍。
...

阅读全文…
复制 /etc/DIR_COLORS 到 ~/.dircolors ,然后重新登录即可。
如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用来刷新缓存的。当这个命令执行后,我们会看到
...

阅读全文…

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),以目前高转速...

阅读全文…

mysql下的insert/replace into/update/delete

[ 2010-12-10 09:16:49 | 作者: admin ]
p.s. 容易弄错的是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 首先尝试插入数据到表中。
1、如果发现表中已经有此行数据(根据主键或者唯一索引判断)则先删除此行数据,然后插入新的数据。
2、否则,直接插入新数据。
要注意的是:插入数据的表必须有主键或者是唯一索引!否则的话,replace into 会直接插入数据,这将导致表中出现重复的数据。
...

阅读全文…