查看PHP-FPM内存占用

1、查看php-fpm进程数量

ps -ef |grep "php-fpm"|grep "pool"|wc -l

2、查看每个php-fpm进程占用内存

ps -ylC php-fpm --sort:rss

3、查看php-fpm平均内存占用

ps --no-headers -o "rss,cmd" -C php-fpm | awk '{ sum+=$1 } END { printf ("%d%s\n", sum/NR/1024,"M") }'

4、查看单个php-fpm进程消耗内存明细

pmap $(pgrep php-fpm) | less

用nginx为yapi做反向代理(二级目录)

通过nginx做为反向代理,将yapi反向代理到二级目录上。

需要通过再次代理来实现。

nginx配置文件如下:

server {
    listen       80;
    server_name  yourdomain.com;

    location /yapi_forward/ {
        proxy_pass http://127.0.0.1:3000/;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
        proxy_http_version 1.1;
        proxy_set_header Accept-Encoding 'gzip';
        gunzip on;
    }

    location /yapi/ {
        proxy_pass http://yourdomain.com/yapi_forward/;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
        proxy_http_version 1.1;
        proxy_set_header Accept-Encoding "";
        sub_filter '"/prd' '"/yapi/prd';
        sub_filter '"/iconfont' '"/yapi/iconfont';
        sub_filter '"/image' '"/yapi/image';
        sub_filter '"/api' '"/yapi/api';
        sub_filter '"/user' '"/yapi/user';
        sub_filter '"/group' '"/yapi/group';
        sub_filter '"/project' '"/yapi/project';   
        sub_filter '"/mock' '"/yapi/mock';
        sub_filter 'path:"/' 'path:"/yapi/';
        sub_filter 'to:"/' 'to:"/yapi/';
        sub_filter 'history.push("/' 'history.push("/yapi/';
        sub_filter_types *;
        sub_filter_once off;
    }
}

解决GmSSL报错找不到libssl.so.1.1的错误

按照文档手册安装好国密库GmSSL之后,执行命令:

gmssl version

报错:

gmssl: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory

解决方法如下:

添加两条软连接:

ln -s /usr/local/lib64/libssl.so.1.1 /usr/lib64/libssl.so.1.1
ln -s /usr/local/lib64/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1

再次运行命令,就OK啦:

GmSSL 2.5.4 - OpenSSL 1.1.0d  19 Jun 2019

macOS安装redis服务

直接贴安装命令:

brew search redis
brew install redis

启停命令

brew services start redis
brew services stop redis

服务器挖矿病毒查杀(crontab pastebin.com)

服务器异常症状

  • CPU使用率过高,网络出口流量异常;
  • crontab异常,出现 pastebian.com 相关的 wget 命令

查杀方法

安装busybox

wget http://busybox.net/downloads/busybox-1.21.0.tar.bz2
yum -y install bzip2
tar -xvf busybox-1.21.0.tar.bz2
cd ./busybox-1.21.0
make defconfig
make
make install
ln -s `pwd`/busybox /usr/bin/busybox
busybox|grep BusyBox |grep v

如果出现以下信息,说明安装成功

BusyBox v1.21.0 (2019-04-15 19:51:44 CST) multi-call binary.

注意,部分挖矿病毒会修改动态链接库,用 vim 打开下面文件,并注释掉其中的内容

继续阅读 →

supervisor配置文件模板

项目中需要使用到supervisor来管理常驻内存的后台程序,配置文件样例如下:

[program: smproxy]
command=/usr/local/php/bin/php /usr/local/smproxy/SMProxy start --console    ;服务启动命令
directory=/usr/local/smproxy/    ;命令执行目录
user=root    ;执行命令用户
autorestart=true    ;是否自动重启
autostart=true ;启动supervisor时是否自行启动该程序
;redirect_stderr=true   ;如果为true则将stderr发送到stdout相应的log文件中去
;;stdout_logfile=/var/log/supervisor/app.log ;制定stdout的输出文件
;;stdout_logfile_maxbytes=10MB   ;限定logfile的大小, 默认为50M
;;stdout_logfile_backups=10 ;保存logfile的最大数目,如果操作这个数目则对最早的logfile进行覆盖,默认为10
;;environment=A="1", B="2" ;设置环境变量,这里可以保存运行程序需要的参数 

注:

通过yum安装的supervisor,默认配置文件目录为 /etc/supervisord.d

NGINX + PHP-FPM 优化记录

最近做的 NGINX + PHP-FPM 优化,记录一下,留待后用。

测试环境,8 核 CPU,64G 内存。

1、PHP-FPM 配置文件

listen = 127.0.0.1:9000 修改为 listen = /tmp/php-fpm.sock
listen.backlog 取消注释,并修改值为 102400
pm = dynamic 修改为 pm = static
pm.max_children 的值修改为 200

2、启动多个 PHP-FPM 实例

复制 php-fpm.conf 配置文件

cp php-fpm.conf php-fpm.1.conf

修改复制的 php-fpm.1.conf

listen = /tmp/php-fpm.sock 修改为 listen = /tmp/php-fpm.1.sock

建议启动的 PHP-FPM 实例数量与 CPU 核心数量一致。

3、NGINX 配置文件

worker_processes 8;
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;
worker_rlimit_nofile 204800;
events {
    use epoll;
    worker_connections 204800;
}
upstream phpbackend {
    server unix:/tmp/php-fpm.sock
    server unix:/tmp/php-fpm.1.sock
}
server {
    default backlog = 102400;
    location ~ .php$ {
        fastcgi_pass   phpbackend;
        include        fastcgi_params;
    }
}

4、修改系统打开文件数

打开 /etc/security/limits.conf 文件,添加:

* soft nofile 65535
* hard nofile 65535

修改完成需要重启服务器生效!并可使用下面命令查看是否生效:

ulimit -n

macOS 编译 PHP 过程中出现 cannot find openssl’s 的解决

在自己的本子上编译安装 PHP 的过程中,遇到了cannot find openssl’s <evp.h> 的错误,解决办法如下:

brew install openssl

一般来说,问题就这样解决了。。。。

但是,如果还没有解决,那么在 configure 的时候

./configure --with-openssl-dir=/usr/local/Cellar/openssl/1.0.2n

搞定!