Jun
19
今日在服务器的mysql出现了”Too many connectionsConnection closed by foreign host “错误。这个错误之前在测试机也出现过,当时没有留意,只是将测试机中的web服务器定时重启,以解决该问题。而今日出现的在外网的服务器,不能如些操作。可惜在baidu上根据没有找到有用的资料。都是一些小白写的文章。
后来经朋友分析,可能是iptables引起。由于linux下的iptables都是使用ip_conntrack进行跟踪,所有的进出数据包都会记录在连接跟踪表中,包括tcp,udp,icmp等,一旦连接跟踪表被填满以后,就会发生丢包,导致网络不稳定。
而我这一次刚好是由于昨天晚上增加了新的iptables条件,在大量访问下,出现了掉包的情况。引起mysql错误,而最后mysql由于没有获取到正确的连接,而完全没有占用cpu.
后来经朋友分析,可能是iptables引起。由于linux下的iptables都是使用ip_conntrack进行跟踪,所有的进出数据包都会记录在连接跟踪表中,包括tcp,udp,icmp等,一旦连接跟踪表被填满以后,就会发生丢包,导致网络不稳定。
而我这一次刚好是由于昨天晚上增加了新的iptables条件,在大量访问下,出现了掉包的情况。引起mysql错误,而最后mysql由于没有获取到正确的连接,而完全没有占用cpu.
Apr
23
原来网站上一直使用nginx的代理缓存,确实能给服务器节省大量的性能。能将大部分的页面进行缓存,但最近一段时间,发现并没有像以前那样将文件进行缓存。在经过检查后,发现原来 proxy_cache是对头信息有限制的。
http://wiki.nginx.org/HttpProxyModule#proxy_cache
proxy_cache受几个因素影响:
1,proxy_buffers必须启动,否则将不能使用缓存
2,如果头信息存在以下的情况,缓存将会被忽略。
有Set-Cookie
Cache-Control的内容包含: "no-cache", "no-store", "private", or a "max-age" 是0
Expires 设置的时间一个过期的时间
X-Accel-Expires: 0
经过分析,原来程序中有一个程序修改后,默认所有页面都会传出一个Set-Cookie的值,这个值引起页面一直没有行缓存。从而使用页面服务器一直很慢。
http://wiki.nginx.org/HttpProxyModule#proxy_cache
引用
The cache depends on proxy buffers, and will not work if proxy_buffers is set to off.
The following response headers flag a response as uncacheable unless they are ignored:
Set-Cookie
Cache-Control containing "no-cache", "no-store", "private", or a "max-age" with a non-numeric or 0 value
Expires with a time in the past
X-Accel-Expires: 0
The following response headers flag a response as uncacheable unless they are ignored:
Set-Cookie
Cache-Control containing "no-cache", "no-store", "private", or a "max-age" with a non-numeric or 0 value
Expires with a time in the past
X-Accel-Expires: 0
proxy_cache受几个因素影响:
1,proxy_buffers必须启动,否则将不能使用缓存
2,如果头信息存在以下的情况,缓存将会被忽略。
有Set-Cookie
Cache-Control的内容包含: "no-cache", "no-store", "private", or a "max-age" 是0
Expires 设置的时间一个过期的时间
X-Accel-Expires: 0
经过分析,原来程序中有一个程序修改后,默认所有页面都会传出一个Set-Cookie的值,这个值引起页面一直没有行缓存。从而使用页面服务器一直很慢。
Apr
23
在linux下批量删除缓存文件真是一个很麻烦的事。网上有人说用rsynx进行批量删除。
但是在我的实践过程中,这个方法,实际上也不好使,而且效率比rm的效率要低。
最后还是使用rm进行删除文件。
但是在我的实践过程中,这个方法,实际上也不好使,而且效率比rm的效率要低。
最后还是使用rm进行删除文件。
nohup rm -rfv ./cache.bak &
Feb
12
现在写css的人都是都喜欢使用标签进行定义样式,虽然我不是一个反传统的人,但写上标签在css里面,如果以后要改变标签,就不太方便了.特别一些共用的类.直接写标签限制太多了.所以建议如下:
1,使用css类作为基本定义方式.
2,标签的样式定义只用于reset
3,每一个内容块中的子类,都使用"s-"开头,如:s-item,s-tab-nav
4,共用类使用 "t-"开头,如:t-clearfix
1,使用css类作为基本定义方式.
2,标签的样式定义只用于reset
3,每一个内容块中的子类,都使用"s-"开头,如:s-item,s-tab-nav
4,共用类使用 "t-"开头,如:t-clearfix
Feb
3
今天在测试网站的某个功能时,明明使用了php_admin_value限制了函数的使用。通过phpinfo和ini_get得到的值已经变成我配置的值了。可是限制的函数还是可以用。
php_admin_value disable_functions ini_alert
结果发现这是php留给大家的一个坑:“看到的不一定是真实的”。
答案在这里:http://php.net/manual/zh/configuration.changes.php
原来php_admin_value只能修改 PHP_INI_ALL 或 PHP_INI_PERDIR 类型的配置变量。
刚好 disbale_functions 不属性这两个类型,而且只能在php.ini里修改。
详细查看http://www.php.net/manual/zh/ini.list.php
php_admin_value disable_functions ini_alert
结果发现这是php留给大家的一个坑:“看到的不一定是真实的”。
答案在这里:http://php.net/manual/zh/configuration.changes.php
原来php_admin_value只能修改 PHP_INI_ALL 或 PHP_INI_PERDIR 类型的配置变量。
刚好 disbale_functions 不属性这两个类型,而且只能在php.ini里修改。
详细查看http://www.php.net/manual/zh/ini.list.php