笑傲江湖


第一次听说笑傲江湖还是上小学的时候,印象特别深刻,有一天上午下了第一节课令狐冲的名字在同学中传来传去。不知道为什么回家也没有去看,后来转学去了很遥远的地方,那里没有江湖…
继续阅读

PHP-FPM占用CPU过高分析及OPcache解决

平时站点CPU使用率都在10%以内,最近发现达到了50%左右
top查看服务器资源使用情况:

%Cpu0  : 41.9 us,  1.3 sy,  0.0 ni, 56.1 id,  0.3 wa,  0.0 hi,  0.3 si,  0.0 st
KiB Mem :  1016164 total,    68120 free,   583512 used,   364532 buff/cache
KiB Swap:        0 total,        0 free,        0 used.   251176 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
 5705 www       20   0  281272  40360   4516 S 15.0  4.0   0:09.09 php-fpm
 5704 www       20   0  281292  40604   4584 S  8.0  4.0   0:08.89 php-fpm
 5706 www       20   0  281124  41124   5296 S  8.0  4.0   0:08.80 php-fpm
 5707 www       20   0  281328  40596   4580 S  7.7  4.0   0:08.77 php-fpm

继续阅读

PHP导出CSV文件及问题总结

第一部分:生成CSV文件,导出/下载文件

0、什么是CSV文件。
CSV(Comma-Separated Values),即逗号分隔值(有时也称为字符分隔值,因为分隔字符也可以不是逗号)。CSV文件是以CSV格式存储表格数据的纯文本文件。
注:Excel可以直接打开CSV文件, 可以另存为Excel文件扩展名xls(Excel 03之前的版本), xlsx(Excel 07之后的版本)。所以一般导出Excel数据的需求,直接导出CSV比较快捷。
继续阅读

shell脚本验证业务机与DB的联通性

一个验证业务机与DB的联通性的小工具

#!/bin/bash
# 请求全部业务机上操作DB的接口,测试联通性
ips=(47.75.217.22, 47.75.217.23, 47.75.217.24, 47.75.217.25, 47.75.217.26)

if [ x$1 != x ]; then
    mod=$1
else
    mod="r"
fi

for ip in ${ips[@]};
do
    curl -x "$ip:80" "http://i.niliu.me/api/dbconn?cip=$ip&mod=$mod"
    echo "ok"
done

线上MySQL数据库迁移的一个方案

对线上正在使用的数据库做迁移,很少遇到这样的情况,考虑到没有长连接, 开始想到的方案很简单:
0、新建一个MySQL主从库
1、旧主单向往新主实时同步(毫秒级),新主不往旧主同步。
2、切换连DB的读账号信息,观察读是否正常。
3、切换连DB的写账号信息。
4、观察一段时间,旧库没有新写入内容即可断开往新主的同步。
继续阅读

Linux网站打开慢之mtr工具探测分析

一个Web应用,通过浏览器来访问,发现页面加载很慢,我们可以用下面的步骤来初步排查问题:
一、初步排查方法
0、打开浏览器调试模式,简单看看是否有报错,加载明显慢的资源。【如有,代码优化】
1、ping域名,看解析是否正常。
2、切换其他网络,比如4G,查看是否正常。或者借助第三方网络测试工具,测试全国其他节点
http://tool.chinaz.com/speedtest.aspx
3、登陆服务器,查看负载、带宽是否正常。
继续阅读

查看TCP端口监听程序netstat和lsof差异

经常需要查看服务器上端口(例如9006端口)占用情况,以及是被哪些程序监听的。Linux上有两个工具都可以完成我们的任务: netstat和lsof。下面就分别介绍下这两个工具的查看方法。

一、netstat
0、功能:查看网络状态(具体可见man netstat)。
1、安装:一般发行版Linux都自带,如果没有,Centos下可通过如下命令安装。

yum -y install net-tools

继续阅读

压测工具之ab

一、介绍
0、导语
最早接触的压测工具就是ab, ab是ApacheBench的简称,是Apache HTTP服务器基准测试工具,当然也可以测试其他服务器。

1、安装
Linux和Mac系统一般自带Apache, 所以可以直接在终端使用ab命令。Windows系统或其他没有安装的系统,请自行安装。

2、ab参数
ab的具体描述和参数,请参考官网ab, 或者直接man ab查看。
继续阅读

PHP二维数组合并排重的两种方式

业务中需要统计一段时间投票独立的用户数,涉及到数组的排重,用传统array_unique()发现,当数据量达到百万级后, 设置的1G内存都耗尽了,仍然没有统计完。而用array_flip()发现不仅可以统计出来,而且更快。

之前这两种方式没有比较过,数据量小的时候也没有遇到问题,发现差异,一直混用。特记录下两种方式。
继续阅读

shell脚本实用初级入门

做为开发同学,实际工作中熟练使用大部分shell命令就能完成绝大多数事情,需要编写shell脚本的场景(机会)并不多。一般不会系统去学习shell脚本,这就导致偶尔要写一个shell脚本,往往觉得很费劲,比如自动登陆服务器、分发文件…

实际上系统介绍shell脚本的资料很少(包括书籍和网络),没有找到官网,网上各种教程也是众说纷纭,特整理一份让开发很快能熟悉的文档。

Shell是一种脚本编程语言,类似PHP、Python。可以简洁地表达复杂的操作(用很少的代码实现强大的功能)。
继续阅读