Building the Coming Soon

关于

HFLS aka the Akademia 12′, then NUST 16′, HKU 18′, now a Blue.

“Zabbix poller processes more than 75% busy”警报问题解决

01/25/2014

虽然Zabbix的监控警报各种有,但Kaijia使用碰到最多的几个莫过于内存耗尽,网络不通,IO太慢还有这个“Zabbix poller processes more than 75% busy”了。一开始的时候因为这个即不影响使用也持续一会儿就自行解决就没有多在意。然后随着数据库的增大,Zabbix消耗的内存可是越来越多,Poller processes(轮询)开始天天Busy了,最终Kaijia不得不把Zabbix挪到了另外一台服务器上。

但这并没有彻底解决问题,警报仍然三天两头来几个。之后Kaijia开启了Zabbix警报的邮件功能,于是开始频繁收到这类邮件,于是Kaijia决定解决这个问题。Google了一下资料,没有找到很权威的答案,造成轮询忙的问题有很多中,支撑Zabbix的MySQL卡住了,Zabbix服务器的IO卡住了都有可能,Zabbix进程分配到内存不足都有可能。一个简单的方法是增加Zabbix Server启动时初始化的进程数量,这样直接增加了轮询的负载量,从比例上来讲忙的情况就少了。

阅读更多

WordPress菜单中创建无地址自定义链接

01/10/2014

这个问题相信也纠结过很多人。当有一个WordPress页面没有内容,而需要在自定义菜单中作为一个上级页面展示时如何避免用户点击这个菜单并发现页面上没有内容这种囧事。最简单的方法将页面替换成一个自定义链接,但是WordPress默认不支持没有链接地址的自定义链接。于是之前Kaijia喜欢将这个自定义链接跳转到网站首页,但是这样也不具有用户友好性。

于是纠结了一下想到了一个很巧的方法,就是利用HTML的特性,使用#代表本页面。

根据W3C标准,以“#”开头的链接是为转到当前页面的对应name属性而不作跳转,所以当一个链接只有“#”时可视为转到当前页面的顶部,因此并不会发生页面跳转。

添加一个无地址自定义链接

添加一个无地址自定义链接

所以只需要在WordPress菜单设置中的链接URL中输入“#”就可以代表本页面了。

快速批量修改Git提交注释方法

01/09/2014

纠结这个问题的原因还是——完美主义造成的格式问题。很久以前Kaijia一直在用Word的格式,即英文和中文之间没有空格填写提交注释,今年暑假看了微软的设计规范文档之后Kaijia开始采用英文和中文之间有空格的形式。所以这次Kaijia将原来储存在SVN中的内容导入到Git时特纠结打算将之前的格式全部换过来。于是Google了一下批量修改Git提交注释的方法。

一开始还没有找到,当然主要原因还是一般人只会遇到需要修改最近的一条注释的情况,仔细重新看了一遍后在一篇Stack Overflow中的一个非最受欢迎答案中找到了方法。

阅读更多

mod_pagespeed导致Apache服务器高CPU负载问题解决

01/08/2014

从没有IO瓶颈的OpenVZ切换到KVM之后各种问题就会体现为不正常的CPU负载,比如这次Kaijia在为Apache服务器添加了mod_pagespeed模块支持后就遇到了这个问题。在启用了mod_pagespeed以及其他几个模块后,Kaijia查看CPU负载的监控记录时发现启用mod_pagespeed模块前后的CPU负载差距异常大。

系统监控显示PageSpeed启用前后CPU负载对比

系统监控显示PageSpeed启用前后CPU负载对比

由于同时启用了多个新模块,所以Kaijia还不能确定到底是哪个模块的问题。Kaijia打开Apache的错误日志查看记录,结果无论使用vim还是nano都转了半天没有动静。一般这种情况都是由于IO造成的,于是Kaijia查看了一下error.log的大小,结果发现error.log居然有242MB(这。。。)。

阅读更多

OnApp XEN平台Recovery模式修复Linux系统无法启动问题

01/08/2014

今天Kaijia遇到了一件郁闷事。Kaijia登录一台由OnApp驱动的Ubuntu VPS时发现系统里有些早前的内核可以删除,于是Kaijia用dpkg列出了所有旧内核,全部删除了并且执行了update-grub更新GRUB引导的menu.lstupdate-grub没有提示错误,更新完成之后重启服务器,结果Kaijia等了很长时间都无法连接SSH,登录到管理界面一看才发现是VPS无法成功启动了。

于是Kaijia尝试使用OnApp提供的Console,但是当VPS关闭时Console是不可用的。重复几次尝试启动系统失败后,Kaijia确认是由于内核无法载入导致GRUB失败,因此此时只能使用OnApp提供的Recovery Console尝试修复系统。搜索了一些资料后Kaijia找到了OnApp官方提供的使用文档,按照文章的提示成功修复了系统。

通过管理面板启动OnApp恢复模式

通过管理面板启动OnApp恢复模式

阅读更多

Windows无法连接到System Event Notification Service服务问题解决

01/07/2014

这也许是自从在笔记本上安装了Windows 7以来Kaijia第一次遇到的不明故障。至今Kaijia仍然无法确认造成错误的具体操作,因为在一次开机后系统,系统任务栏的Aero界面突然消失并且提示“Windows无法连接到System Event Notification Service服务”,对System Event Notification Service服务手动配置并且重启后问题仍然存在。

Windows无法连接到System Event Notification Service服务错误提示

Windows无法连接到System Event Notification Service服务错误提示

Kaijia回想起上一些使用Windows时的操作——用Word 2010制作了一个模板文件并且安装并删除了多个版本的冬青黑体字体。这看起来和这次遇到的问题八竿子都打不到一次,这是Kaijia第一次对Windows系统完全没有头绪。Kaijia尝试通过修复Aero界面来修复这个问题,但是系统直接提示无法执行体验指数评分。于是Kaijia只能将各种症状描述成英文去微软的论坛中寻找类似的情况,最后在TechNet中找到了一篇《Could not connect to System Event Notification Service》的帖子,其中也提到了这个问题是由于字体缓存造成的。Kaijia按照帖子中提供的基础方法尝试清除字体缓存但是并没有成功,然后一位名叫Lany Zhang的用户回帖说注意微软的热修补KB2590550

阅读更多

GitLab出现“The remote end hung up unexpectedly”问题解决

10/26/2013

考虑到iPlacard和Info Flow日益庞大以及今后开发的需要,今天Kaijia在自己的服务器上安装了GitLab以实现更好的团队开发。安装完成后一切运行正常,但是当Kaijia要把iPlacard的SVN导入到GitLab时却遇到了问题。

Kaijia首先通过git svn命令将原有的SVN库转换为Git本地库,然后尝试将本地的Git提交到GitLab,Kaijia使用的命令是:

但是Shell显示的结果却是:

error: RPC failed; result=22, HTTP code = 413
fatal: The remote end hung up unexpectedly
fatal: The remote end hung up unexpectedly
Everything up-to-date

Kaijia看了一下GitLab这次提交没有显示出来,说明这次提交中断了。于是Kaijia搜索了一下,发现也有人报告遇到“fatal: The remote end hung up unexpectedly”错误,但是报告的错误一般都是通过SSH连接GitLab的情况,而Kaijia是通过HTTPS(禁用SSH避免安全隐患)的。最后Kaijia在GitLab的Issue Tracker上找到了一个错误报告成功解决了这个问题。

阅读更多

使用SQL恢复WordPress链接管理器

10/22/2013

WordPress 3.5默认禁用了链接管理器功能,于是出现了WordPress测试时很多人报告链接管理器消失为Bug的情况。WordPress本地化团队还发布过一篇日志解释如何恢复链接管理器

如果您需要该功能,请前往“仪表盘” → “插件” → “安装插件”,然后搜索“Link Manager”,来安装由“WordPress”或“nacin”开发的“Link Manager”插件以启用该功能。

其他博客也提供了更多方法,例如在主题的functions.php中增加:

这些方法都可以实现恢复WordPress链接管理器,但是都对WordPress进行了修改。Kaijia尝试找一种可以不修改WordPress,于是对比了一下几个博客的wp-options表和新安装WordPress的wp-options表,参考了WordPress Codex文档中的提示:

As of Version 3.5, the Links Manager and blogroll are hidden for new installs and any existing WordPress installs that do not have any links. If you are upgrading from a previous version of WordPress with any active links, the Links Manager will continue to function as normal.

最后找到了最快的解决办法,只需要WordPress数据库中运行以下语句便可在不更改WordPress的情况下启用链接管理器功能:

如果使用PHPMyAdmin,只需要在wp-options表中搜索option_namelink_manager_enabled的记录,并将其值改为1即可。这样WordPress链接管理器就恢复了。

Zabbix Agent出现ZBX_TCP_READ() failed: [4] Interrupted system call问题解决

10/21/2013

Kaijia这几天开始使用Zabbix来监控服务器的性能。一开始监控的是几台主要的机子,一直用的很不错,于是将几台不重要的服务器也托进来。这时在有一台服务器上遇到了问题,按照之前相同的配置完成之后,Zabbix Server一直提示无法访问这台服务器上的Zabbix Agent(版本是为Ubuntu 12.04源中自带的1.8.11)。Kaijia查看了一下Zabbix Server的日志,找到了错误提示:

Get value from agent failed: ZBX_TCP_READ() failed: [4] Interrupted system call

Kaijia于是Google了一下,发现也有很多人遇到了这个错误,错误提示是连接被中断,但是网上的提问好像基本没有得到解决的。

阅读更多

32位PHP函数filesize获取2GB以上大文件错误解决

09/07/2013

众所周知,32位的PHP函数filesize无法有效获取2GB以上大文件的文件大小,的确在古老的年代里,人们应该还没有考虑到某天会需要使用PHP读取一个2GB以上的大文件。在PHP手册中就写明了:

因为 PHP 的整数类型是有符号整型而且很多平台使用 32 位整型,对 2GB 以上的文件,一些文件系统函数可能返回无法预期的结果。

不过这个巧事却被Kaijia遇上了。这几天Kaijia在写一个使用百度网盘API的服务器数据备份工具(因为百度提供了PHP SDK,所以Kaijia使用了php-cli来运行此程序),由于百度网盘限制通过API上传2GB以上的大文件,所以上传大文件需要将文件分割,当然分割之前需要判断文件是否超过2GB,而这时却遇到了问题:PHP自带的filesize函数在遇到2~4GB大小的文件时返回了负数。导致上传经常出错。于是Kaijia Google了一下,找到了很多种方法,但是都存在缺陷,部分文件大小仍然无法正常读取。最后Kaijia通过Stack Overflow给出的一个失效链接导引回PHP手册找到了一个有效的办法。

阅读更多

较新文章
较旧文章
... 载入更多文章 ...

- 已经载入全部文章 -