快过年了,服务器总会出些问题让大家忙活下。首先是 5.3.8 爆出大 BUG 来。然后是升级后出现一系列的问题。这几天服务器从 5.3.8 升级到新版本 5.3.9 共出现了:
socket() failed (55: No buffer space available) while connecting to upstream(通过切换 spawn-fcgi 为 PHP-FPM 问题好像就没再出现了) Can’t create TCP/IP socket (55) (估计和上面问题类似) 500 内部错误、502 BAD GAYEWAY(由于有台服务器没打开日志 - -! 也不知道是啥问题) Too Many Open Files 这里说下 Too Many Open Files 的问题,当流量达到一定数量的时候(并不一定非常大),程序执行时打开的文件也比较多(50+-,如果你用 ZEND 的话,打开这么多文件也很正常),就可能会出现打开系统文件句柄过多的问题。 如果出现这个问题,首先看看NGINX 和 PHP-FPM 的 rlimit_files 的设置。看下当前打开文件句柄是否已经接近这个值了,最后再看下系统的设置。 相关参数 PHP-FPM.INI
; Set open file descriptor rlimit.
; Default Value: system defined value
;rlimit_files = 1024
NGINX.CONF worker_rlimit_nofile FDLIMITS; [...]
我们都知道HTTP中有一个HEADER 头信息,通过 PHP 函数 HEADER 可以向客户端浏览器代理发送一个 HEADER 头。比如:
1
2
3
4
<?php
/* This will give an error. Note the output
* above, which is before the header() call */
header(’Location: http://www.example.com/’);
默认情况下 PHP 解释器会自动向客户端浏览器代理发送一个名为:X-Powered-By 的 HEADER ,如下图:
这样就暴露了服务器 PHP 的版本(当然 NGINX 也发送了他的版本)。如果是恶意的用户,发现服务器当前版本正好有漏洞并加以攻击的话,就会很麻烦。
以下是 NGINX [...]
哇,发布的好快啊。其他的不关注,我只关注了下 Supercolliding a PHP array (HASH 碰撞导致 PHP-CGI 崩溃) 的问题。
Security Enhancements and Fixes in PHP 5.3.9:
Added max_input_vars directive to prevent attacks based on hash collisions. (CVE-2011-4885)
Fixed bug #60150 (Integer overflow during the parsing of invalid exif header). (CVE-2011-4566)
…
All users are strongly encouraged to upgrade to PHP [...]
具体问题就不描述了,因为网络有太多关于这个的描述和转载了。
下面引用网络上解释碰撞原理的一段话:
当然这是理想情况下,因为任何哈希表的长度都是有限的,所以一定存在不同的数据项具有相同哈希值的情况,此时不同数据项被定为到同一个桶,称为碰撞(collision)。哈希表的实现需要解决碰撞问题,碰撞解决大体有两种思路,第一种是根据某种原则将被碰撞数据定为到其它桶,例如线性探测——如果数据在插入时发生了碰撞,则顺序查找这个桶后面的桶,将其放入第一个没有被使用的桶;第二种策略是每个桶不是一个只能容纳单个数据项的位置,而是一个可容纳多个数据的数据结构(例如链表或红黑树),所有碰撞的数据以某种数据结构的形式组织起来。
PHP是使用单链表存储碰撞的数据,因此实际上PHP哈希表的平均查找复杂度为O(L),其中L为桶链表的平均长度;而最坏复杂度为O(N),此时所有数据全部碰撞,哈希表退化成单链表。
今天刚看到这个问题,在我本机上跑了下下面的实例代码。结果就不贴出来,已经大于 100 了,很惭愧啊。因为这个是生成整形的 HASH 碰撞代码所以对网站本身还不构成威胁。我们都知道 $_post、$_request 过来的是字符串。于是就找了一个字符串的算法,去攻击内网的一台内部服务器。结果 PHP-CGI 直接崩溃,网站就挂了。
所以这里提醒下各位 SA 同学们,该升级下程序引擎拉。因为这次涉及的语言很广,这里就不列举了,直接 GOOGLE 查询 Supercolliding a PHP array 即可。
PHP 整形 KEY 碰撞代码 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<!–?php <br ?–> $size = pow(2, 16); // [...]
从同事那发现一个 密码泄漏查询 的网站,可以查询到 人人 、 天涯 、 猫扑 、 Weibo 、 CSDN 、 178 、 7k7k 、 嘟嘟牛 、 多玩的用户资料。
鄙视这些保存用户密码原文的网站,更鄙视竟然还泄露了,保留用户的密码原文真是一种卑劣的行为。
建议大家在玩这些网站的时候用一个比较通用、可以到处用的密码,比如 123qwerty 别想这些网站为你保护你的隐私。
PS:从技术上讲账号登陆验证根本不需要密码原文,找回密码也不需要。
今天来公司发现有台机器上的 MONGO 因为断电再次开机时,出现 “replSet error loading set config (BADCONFIG)” 的错误信息。
这种突如其来的问题,一般比较难查找出具体的原因。GOOGLE 一把,发现遇到这个问题的人也不多。
情况是这样的 3 这个MONGO实例,遇到断电出现错误,于是同事到了某个实例的目录下删除了 local.* 文件。那么这台 MONGO 的 rs.conf() 就成了 NULL,其他 2 个实例 rs.conf() 正常。但是 rs.status() 3个实例都出现 “replSet error loading set config (BADCONFIG)” 的错误信息。
rs.conf() 的信息是取自 local 下的 db.system.replset collection 下,所以尝试了直接修改这个记录,把 3 个实例全部改成一样。但是还是不行。
1
2
3
4
> rs.conf
function () {
有时候做版本升级需要比对版本之前的差异并导出受影响的文件,做升级补丁或文件覆盖。以前都是在WINDOWS下打包处理,用 TortoiseSVN 很方便,先查看 LOG 然后比较导出即可。现在换到 MAC 下实在找不出更好的工具能承担这个任务。今天看到 Jason TortoiseSVN for Apple OSX 的日志,随手尝试了一把,成功了嘿嘿。这里分享下。
首先用 CROSSOVER(WINE) 装上 TortoiseSVN,和 WINDOWS 一样下一步即可。问题是装好后 WINDOWS 下右键即可看到 TortoiseSVN 的操作选项。CROSSOVER 却没有,而且类似 EXPLORER.EXE 的工具也很简陋。
还好的是 TortoiseSVN 提供了命令支持 TortoiseSVN Commands,执行 TortoiseProc.exe 并提供参数即可打开WINDOWS下一样的界面。
下面做个 checkout 的例子
在 Wine File 下选择 档案-》执行 输入以下命令:
1
C:\Program Files\TortoiseSVN\bin\TortoiseProc.exe /command:checkout /path:"/Users/Nroe/Desktop/zendcasts/zc14" /url:"http://zendcasts.googlecode.com/svn/trunk/zc14"
[...]
跑QQ久了,在Image.db就有N多图片。Image.db 里是一些聊天中的截图或一些乱七八糟发的图片,没啥用就可以清理下
我的这个目录下有5.1W个图片,空间占用2G多
这个目录在定期维护中也不能忽视啊,好大,好多小图片啊。清理一共花了我18分钟。
1
2
cd /Users/Nroe/Library/Application\ Support/QQ/[你的QQ号]/Image.db/
ls | xargs rm
实用技术博客,分享、讨论实际工作中的一些问题和经验
茉莉花~
近期评论
- nroe 发表在《MONGO 的 Replica Set》
- addcn 发表在《MONGO 的 Replica Set》
- nroe 发表在《MONGO 的 Replica Set》
- addcn 发表在《MONGO 的 Replica Set》
- nroe 发表在《mongo replSet BADCONFIG》
标签
.SVN 80后 AJAX Android APACHE aspersa AWE41AP BSD BUFFLAO character CHROME compiler Content-Disposition csshX CSV dns freebsd GOOGLE Javascript MAC MACPORT MAIL MMSEG4N MongoDB MySQL NGINX NODEJS OSX OSX Password-Strength phing PHP Replica-SET REWRITE SESSION SHEEL SHELL XDEBUG ZendFramework 中国特色 域名 存储过程 安全 搞笑 漫画日和链接表
- 01. Eric's linux and nginx 杨振亮一直从事linux 负载均衡,存储等工作
- 01. 叶茂盛 YeMaosheng’s Blog(软件开发、系统管理)
- 01. 威同学的博客 疯狂痴呆傻,美甘苦涩禅
- 01. 阿冬的 I-T 厨房的博客
- 01. 风雪之隅 PHP 的文章比较多,偶然看看[推荐下]
- 02. 新普IT教育(培训)
- 02. 若寒小记
- 10. Ayou 服务器系统架构分析日志 网易 Ayou,博客很简洁,内容精彩
- 10. Cats Who Code a website dedicated to those who create and maintain websites
- 10. David Walsh Blog MooTools Dev, JavaScript FanBoy, CSS Experimenter, and TPS Reporter
- 10. Web App Security
- 10. 大罗-PHP/Python博客
- 99. CodeColorer wordpress 代码加亮插件
- 99. stackoverflow.com 专业技术问答网站
文章归档
- 2012 年一月 (4)
- 2011 年十二月 (9)
- 2011 年十一月 (7)
- 2011 年九月 (4)
- 2011 年八月 (11)
- 2011 年七月 (27)
- 2011 年六月 (20)
- 2011 年五月 (9)
- 2011 年四月 (10)
- 2011 年三月 (3)
- 2011 年二月 (3)
- 2011 年一月 (22)
- 2010 年十二月 (18)
- 2010 年十一月 (2)
- 2010 年十月 (6)
- 2010 年九月 (18)
- 2010 年八月 (6)
- 2010 年七月 (3)
- 2010 年六月 (2)
- 2010 年四月 (1)
- 2010 年三月 (7)
- 2010 年二月 (11)
- 2010 年一月 (8)
- 2009 年十二月 (4)
- 2009 年十一月 (4)
- 2009 年十月 (4)
- 2009 年八月 (5)
- 2009 年七月 (21)
