小型网站架构降 Apache 与 MySQL 内存占用比率

前言这篇文章以我的阿里云服务器为例(你眼前的博客正是搭在这个服务器上),阐述下小型网站(Linux+Apache+MySQL+PHP)对于内存利用率提升的配置方法的一个点。正文我的服务器是阿里云的,在一年前由于数据库(MySQL)频繁内存不足宕机就“潇洒”地升级了配置到2G内存。所以,目前机器的配置如下CPU: 1核内存: 2048 MB操作系统: CentOS 6.5 32位公网IP: 115.28.36.19带宽计费方式: 按固定带宽当前使用带宽: 1Mbp同时,正常使用情况下的内存使用情况如下linux 内存 mysql 与 apache 占用图中显示 MySQL 占用 440m,Apache 占用 44m。当然,这是MySQL 服务和 Apache 服务刚刚重启后的情况。实际的内存占用会比这大,因为随着业务的进行,会进行 Cache 的累积,最后导致整体的使用内存增大。下面分别调整 MySQL 和 Apache 的配置文件。... Read More

在 Linux 下通过 strace 与 lsof 命令排查 PHP 异常进程

在有些时候,会遇到 PHP 进程异常卡死的情况。面对这种情况,首先考虑到的就是分析代码进行优化改进,或者重启进程。但是,这种方式来排查不一定能找到根本原因。因为有些时候异常 PHP 进程卡死的原因可能是非常奇葩的问题,比如外部资源异常如 DB、Redis 或第三方 API 等。上一次关于超级话题签到提醒定时任务 PHP 进程异常的处理,问题竟然出现在外部的 DB 的链接上。由于网络原因导致读取 DB 没有响应卡死。这一次情况比较严重,超级话题积分系统的计算有一部分是通过 Trigger(类似队列)接受全站数据进行积分计算与入库。由于用户反馈问题,来到队列机查看进程情况。如下$ ps -ef | grep Trigger | grep Commenwww 10693 1 7 16:06 ? 00:04:09 /usr/local/bin/php /path/cli.php request... Read More

基于 libgit2 C 语言库的 php-git 扩展 fix bug 辛酸史

前言这是一篇极其没有节(nei)操(rong)的文章。除非你真的无聊,请不要阅读,否则后果自负正文最近,在忙活微博话题组的日构建工具。工具主要的功能并不算复杂。写着写着,外面雨过天晴,居然还放起爆竹了,什么鬼。构建工具的主要功能正如介绍中所述的那样,提取产品、测试等基本信息、提取版本库(git)信息、检查(编译)源文件、自动部署项目与发送邮件等。在提取 git 库信息时,相对于之前利用 shell_exec PHP 原生函数提取 svn 信息的方式,打算利用扩展来提取信息。一来更规范、更有效率(微乎其微),二来专业。缺点是相对而言部署环境麻烦,因为需要安装 git 扩展到当前 php 运行环境中来。但是,万万没想到官方推荐的 php-git 扩展库开发版本已有3年没有维护了。索性用吧,又能怎样。安装还算顺利,由于公司开发机没有 cmake,yum 源也不可用,懒得配置,直接 downlo... Read More

微信支付 JSAPI 开发中的问题

前言:这篇文章讲的是利用微信官方提供的 JSAPI 接口,实现微信网页支付。希望在看之前,要确认以下几件事情,否则会在解决问题时很费解。① 接口文档版本号是 V3.3(在官方提供的 PHP DEMO 中的 README.txt 文件中查看。当然,也可以参考压缩包的名字(wxm-payment-biz-api218f8e.zip)来确认版本② 微信支付 PDF 文档的版本为 V3.3.7(如果上述版本对了,这步应该也是一致的,因为这两个文件是在一个包里③ 该文章说的是 JSAPI 的开发简单看了下微信支付的文档和源码(压缩包名:wxm-payment-biz-api218f8e.zip;PDF 文档名:【微信支付】微信公众号支付接口文档V3.3.7.pdf;)。然后,修改了微信的配置文件。有如下几个配置项值得注意1、 MCHI注释是“受理商 ID,身份标识”。可以在邮件中查看,这个邮件... Read More