阿里云特别卡,卡成翔,实在是找不出原因所在(对比Linode)
原先一直使用的Linode,默认的Centos7 + nginx + php-fpm,自己yum 安装的这些。在阿里云上也是同样的,1G 内存,1核CPU,也是自己yum install安装的
php-fpm
mariadb
。但是运行起来特别卡,卡成翔。
[root@aliyun php-fpm.d]# systemctl status php-fpm
php-fpm.service - The PHP FastCGI Process Manager
Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; enabled)
Active: active (running) since Thu 2015-06-25 22:20:29 CST; 2 days ago
Main PID: 11116 (php-fpm)
Status: "Processes active: 0, idle: 35, Requests: 77890, slow: 0, Traffic: 0. 3req/sec"
CGroup: /system.slice/php-fpm.service
├─ 2691 php-fpm: pool www
├─ 2695 php-fpm: pool www
├─ 2697 php-fpm: pool www
├─ 2700 php-fpm: pool www
├─ 2701 php-fpm: pool www
├─ 2702 php-fpm: pool www
├─ 2703 php-fpm: pool www
├─ 2810 php-fpm: pool www
├─10042 php-fpm: pool www
├─10045 php-fpm: pool www
├─10046 php-fpm: pool www
├─10049 php-fpm: pool www
├─10053 php-fpm: pool www
├─10054 php-fpm: pool www
├─10056 php-fpm: pool www
├─10058 php-fpm: pool www
├─10060 php-fpm: pool www
├─10062 php-fpm: pool www
├─10064 php-fpm: pool www
├─10066 php-fpm: pool www
├─10068 php-fpm: pool www
├─10070 php-fpm: pool www
├─10072 php-fpm: pool www
├─10074 php-fpm: pool www
├─10077 php-fpm: pool www
├─10079 php-fpm: pool www
├─10080 php-fpm: pool www
├─10082 php-fpm: pool www
├─10084 php-fpm: pool www
├─10086 php-fpm: pool www
├─10096 php-fpm: pool www
├─10097 php-fpm: pool www
├─10099 php-fpm: pool www
├─11116 php-fpm: master process (/etc/php-fpm.conf)
├─14485 php-fpm: pool www
└─20080 php-fpm: pool www
Jun 25 22:20:29 aliyun systemd[1]: Started The PHP FastCGI Process Manager.
将pm.max_children由50改为70之后
反而变少了?
[root@aliyun php-fpm.d]# systemctl restart php-fpm
[root@aliyun php-fpm.d]# systemctl status php-fpm
php-fpm.service - The PHP FastCGI Process Manager
Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; enabled)
Active: active (running) since Sat 2015-06-27 22:35:33 CST; 1s ago
Main PID: 19780 (php-fpm)
Status: "Ready to handle connections"
CGroup: /system.slice/php-fpm.service
├─19780 php-fpm: master process (/etc/php-fpm.conf)
├─19782 php-fpm: pool www
├─19783 php-fpm: pool www
├─19784 php-fpm: pool www
├─19785 php-fpm: pool www
└─19786 php-fpm: pool www
Jun 27 22:35:33 aliyun systemd[1]: Started The PHP FastCGI Process Manager.
[root@aliyun php-fpm.d]#
cp /etc/my.cnf /etc/my.cnf.bak
cp /usr/share/mysql/my-large.cnf /etc/my.cnf
可还是一样,怎么都是那么卡。程序yii2,网站示例:
http://www.35dalu.com/
一个分类信息平台,有软件提交,但是原先放在linode的时候,软件提交更多,每分钟1万次,Linode经常报
disk io rate - has execeeded the notification threshold (5000) for disk io rate by averaging 5520.83
,但是网站打开一点儿都不卡,原先使用的是dedecms扩建的插件程序,高峰发布量一天6万多条都毫无压力,现在改成了yii2 MVC框,搬迁到阿里云,发布一条都得两三秒,
可发现阿里云CPU占用5%不到
,网站特别卡。原先在linode ,
CPU占用一直都在80%以上,内存占用也接近80%
,面对软件提交或者而已攻击毫无压力。现在搬迁到阿里云,却几个人在线都无法承受。
数据量删减了50%,居然还是卡。对比过linode与阿里云的/etc/my.cnf 还有 /etc/php-fpm.conf,/etc/nginx.conf,把阿里云的调成 linode的2倍,还是卡。
比如页面
http://www.35dalu.com/info
卡成翔
使用Ctrl+F5刷新,会经常 504。不敢用注释的那一段,一使用就特别卡,卡成翔。myisam 的表
php
public function actionIndex() { $url = myUrl::lUrl('info'); if (\Yii::$app->request->getPathInfo() != ltrim($url, '/')) { return $this->redirect($url, 301); } $subQuery = Area::find()->where(['level' => 1]); $rowsInfo = Info::find() ->select('tid,uid,uname,title,d1,a.name d1name,ip') ->leftJoin(['a' => $subQuery], ' a.id=d1 ') ->where(['status' => 1]) ->orderBy(['tid' => SORT_DESC]) ->limit(90) ->asArray() ->all(); // $sQuery = Info::find() // ->select('tid,uid,uname,title,d1,a.name d1name,ip') // ->leftJoin(['a' => $subQuery], ' a.id=d1 ') // ->where(['status' => 1]) // ->andWhere([' > ', 'addtime', time() - 8600 * 200]) // ->orderBy(['tid' => SORT_DESC]) // ->limit(300); // // $rowsInfo = (new Query())->from(['s' => $sQuery]) // ->groupBy([new Expression('concat(d1,IF(uid=0,ip,uid))')]) // ->orderBy(['tid' => SORT_DESC]) // ->limit(100) // ->all(); //// // $rowsInfo = Info::find() // ->select('tid,uid,uname,title,d1,a.name d1name ') // ->leftJoin(['a' => $subQuery], ' a.id=d1 ') // ->where(['status' => 1]) // ->andWhere([' > ', 'addtime', time() - 86400 * 300]) // ->groupBy([new Expression(' IF(uid>0,uid,ip) ')]) // ->orderBy(['tid' => SORT_DESC]) // ->limit(80) // ->asArray() // ->all(); return $this->render('index', [ 'rowsInfo' => $rowsInfo ]); }
phpMyAdmin中的一段SQL运行时间的对比
select max(uptime) from info where 1
Linode: 查询花费 1.0224 秒
阿里云:查询花费 5.2453 秒
Answers
1GB内存1个核心,开太多PHP-FPM只会空占内存,不会提升性能,默认5个就够用了.我在Xubuntu上开发时只开1个PHP-FPM进程.同理,MySQL(MariaDB)的
innodb_buffer_pool_size
和
innodb_log_file_size
也不要搞太大:
innodb_buffer_pool_size=20M
innodb_log_file_size=10M
table_definition_cache=400
table_open_cache=400
这样下来,系统可用内存充足了,不进行swap了,应该就不会卡了.