与‘CentOS’有关的日志

搬瓦工的CPU超限了

Poon 发表于 随便说两句 分类,标签: ,
0

昨天上午把网站搬到了美国:https://www.mpyes.com/2019.04.21/13:16:25

昨天晚上手机刷新网站测试速度结果发现速度不是很理想,起初怀疑是不是因为阿里云CDN全站加速对香港线路友好但对美国线路不友好,在凌晨即将入睡的时候再次测试网站速度,起初是可以打开但是打开速度有点慢,然后打开几个页面直接变成了502错误

502 Bad Gateway
The proxy server received an invalid response from an upstream server.
Powered by Tengine

有时候还会是 504错误

504 Gateway Time-out
The gateway did not receive a timely response from the upstream server or application.
Powered by Tengine

字面看起来是阿里云CND节点提示它无法获取到上游网站的原始数据,所以基本可以断定是搬瓦工VPS那边出了什么问题。于是起床,打开电脑,在hosts文件手动将域名指向到搬瓦工的IP以跳过阿里云CDN加速,然后尝试打开网站,发现问题依旧,但刷新几次又能勉强打开网站了

第一反应是不是搬瓦工服务器不稳定了,ping之后发现没有掉包相当稳定,然后登陆搬瓦工后台查看,结果发现:

警告内容如下:

Due to high CPU usage, server’s CPU clock is currently being limited.
Once load is reduced to levels described in our Terms of Service, this limitation will be automatically removed within 60-120 minutes.

If your application requires more CPU time, we suggest upgrading to a better plan. Please contact helpdesk for instructions on how to upgrade your server.
Upgrades are performed seamlessly without data loss and without downtime.

翻译之后大概意思是:由于CPU使用率过高,服务器的CPU时间目前受到限制,一旦负载降低到我们的服务条款中描述的水平,此限制将在60-120分钟内自动删除;如果您的应用程序需要更多CPU时间,我们建议您升级到更高级的计划。有关如何升级服务器的说明,请联系后台帮助。升级是无数据丢失且无需停机的无缝升级。

目前这个VPS只安装了ss+宝塔面板,宝塔面板只开通了我的这个博客这一个网站,并且我的博客的访问量非常的小,纯纯粹粹一个自娱自乐为主没啥人气的网站,从常理说来VPS的配置应该是够用的了,但既然出现异常了那估计要么是centos7太占资源了要么是宝塔面板太耗资源了要么就是搬瓦工的CPU限制太变态了,当然也可能是搬瓦工的偶然性误判。

考虑到傍晚的时候速度也不是很理想,怀疑是不是得开通阿里云全球加速才能更好的加速美国服务器(我目前只购买了阿里云的大陆加速流量,网站尚未开通国际加速)加上现在发现的搬瓦工的CPU超载提示,所以我又得考虑是不是把网站搬回香港了,毕竟之前一直使用的这个香港VPS可以稳定的运行我的博客,虽然ss的速度不如搬瓦工的DC6

写这篇博客的初期大概是01:25,将图片上传之后就发布了个临时草稿,然后跑到小房间的电脑继续编辑的文字(在主卧打字会影响老婆的睡眠) 写完上面这些现在已经是02:15,好吧,今天又严重熬夜了,在网站方面似乎有点强迫症啊,这问题明明可以等到明天甚至下周或下月慢慢搞的,非要凌晨爬起来开电脑找到原因要不然睡不着觉……

==========================

update 2019.04.22 11:00

查看了资源占用情况,上午的整体状况还好,打开博客的速度也蛮快的(另外我还在vps安装了htop进行资源监控)

==========================

update 2019.04.23 22:40

昨晚跟今晚都观察了,整体状况良好,打开速度还是蛮快的

查看了一下资源占用情况,发现凌晨3点左右跟下午6点左右出现过两次高峰,不过最高峰基本都是跑满100%,不像上次居然能跑到200%直接被系统暂停服务(不过到目前为止搬瓦工尚未有邮件警告,所以应该问题不大)

想着换回香港但是这两天一直没换的原因是:一来这几天太忙了,二来我也像看看这个心的搬瓦工到底是不是靠谱,事实证明这个搬瓦工还算靠谱,这几天除了前晚出现过被暂停的情况其它时间都运行得蛮好的,不管是ss还是https服务(但是XML-RPC服务似乎很不稳定,使用livewriter发布日志经常提示“找不到日志的网址:The remote server returned an error: (404) Not Found ”暂时还不确定是vps问题还是livewriter问题)

打算这周抽空还是将网站移回香港,原因是:
1、这个512M的搬瓦工跑centos7确实有点难为它了(centos7貌似只有64位的)
2、宝塔面板要求的最低内存是512M,推荐至少768M以上内存,所以这个512M搬瓦工配置也低了
3、为了能够使用 Google BBR 更号的配合 SS,所以搬瓦工的这个VPS打算继续使用centos7不降级了
4、香港的那个VPS,配置相对高点,而且用了这么久感觉稳定性还是非常不错的
5、香港的那个VPS,阿里云CDN加速的效果还是很不错的
6、香港的那个VPS,虽然带宽不高,但是放博客肯定够了,毕竟博客的图片都是放在国内的

哎,真期待哪天我的网站能够回国!(https://www.mpyes.com/2017.02.15/12:42:39

 

==========================

update 2019.04.28 10:50

网站搬回了香港,再观察搬瓦工的资源占用状况,发现最高的时候也就4%

所以,感觉搬瓦工vps的CPU有点太弱了,暂不清楚是不是centos7+GoogleBBR的问题

WDCP 启用停用问题

Poon 发表于 学习备忘录 分类,标签:
0

近期WDCP似乎有漏洞了,许多用户反应服务器被入侵者恶意利用,为防止意外,建议不用的时候将其关闭,要用的时候再将其开启,用完之后立即关闭!

启动命令 service wdapache start

停止命令 service wdapache stop

另外,使用LNMP一键安装包也是个不错的选择,不过平常管理操作的时候要手动输命令,这个有点麻烦。如果依旧坚持使用WDCP,请务必修改面板端口号、修改管理密码、平时停用WDCP服务!(请注意:本文并非是说WDCP不好,只是带面板的话被入侵的概率会加大很多,这个是没办法的事情,所以我依旧认为WDCP是很不错的管理面板)

CentOS双网卡配置

Poon 发表于 学习备忘录 分类,标签:
0

之前有记录过CentOS双网卡的简单配置:https://www.mpyes.com/2014.04.29/14:22:01

今天尝试着配置了双网卡并且指定出网走的网关,两块网卡分别是:211.157.190.202(公网IP,网关211.157.190.201)192.168.0.2(内网IP,网关192.168.0.1)CentOS主动使用网络从192.168.0.1这个网关出去,两块网卡的配置如下:

#cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
HWADDR=00:22:46:0C:12:02
TYPE=Ethernet
UUID=196b3212-512a-4188-a8cf-48834a44e0e8
ONBOOT=YES
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=211.157.190.202
NETMASK=255.255.255.252
GATEWAY=211.157.190.201
DNS1=114.114.114.119
DNS2=223.5.5.5

 

# cat /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
HWADDR=00:22:46:0C:12:01
TYPE=Ethernet
UUID=2009100c-7086-4309-9071-408259d20a79
ONBOOT=YES
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=192.168.0.2
NETMASK=255.255.255.0
GATEWAY=192.168.0.1
DNS1=114.114.114.119
DNS2=223.5.5.5

 

然后设置CentOS的默认网关为 192.168.0.1

# cat /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=mpyes.com
GATEWAY=192.168.0.1

 

这个时候出现一个很奇怪的问题:192.168.0.2可以ping通,211.157.190.202无法ping通(211.157.190.202所有端口都无法连接,处于离线状态)

重复检查网络配置,重启网络服务,重启整个系统,N次,都没有解决问题;上网找了许多资料,看得云里雾里的,感觉自己的配置都是对的,但搞不懂为什么就是不行;请教会Linux的朋友,折腾来折腾去最终也没有定论,看来Linux双网卡配置真是个冷门问题…..

晚上又想了想,应该是方向搞错了,网络配置是很简单的,既然确认多次都没有问题,那么就肯定是别的地方出了问题,接着上网找资料,最终终于找到了问题所在,原来是要手动添加路由表,设置哪个网卡来的数据还从哪个网卡返回!

# vi /etc/iproute2/rt_tables  添加如下内容:
251     net2
252     net3

 

# vi /etc/rc.local  添加如下内容:(注意网关跟IP的顺序,不可写反喔)

ip route flush table net2
ip route add default via 211.157.190.201 dev eth0 src 211.157.190.202 table net2
ip rule add from 211.157.190.202 table net2

ip route flush table net3
ip route add default via 192.168.0.1 dev eth1 src 192.168.0.2 table net3
ip rule add from 192.168.0.2 table net3

然后reboot一下就搞定啦!

 

最后还有几点补充:

1、网上大多都是双网卡合并成一根线,以及单网卡设置多IP的教程,容易造成混淆,务必看仔细了!

2、搜索这些相对专业的资料,已经多次使用百度无果,然后通过Google成功找到相关资料。

3、无法使用Google的朋友可以参考7号下午4点多的文章。

4、现在晚上回家很少开电脑了,今天开了感觉挺充实的。

VPS每日自动备份脚本

Poon 发表于 学习备忘录 分类,标签:
0

服务器在运行,难免也会出现问题,如服务商跑路、母机硬盘损坏等等。作为站长,备份数据肯定少不了,手动备份确实比较繁琐,利用一个脚本,就可以达到系统每日备份数据的目的。

第一步:创建备份目录
cd /home
mkdir backup
 

第二步:下载脚本

wget https://mpyes.com/AutoBackupToFtp.sh

 

第三步:编辑脚本

#!/bin/bash
#你要修改的地方从这里开始
MYSQL_USER=root           #mysql用户名
MYSQL_PASS=123456         #mysql密码
MAIL_TO=cat@hostloc.com   #数据库发送到的邮箱
FTP_USER=cat              #ftp用户名
FTP_PASS=123456           #ftp密码
FTP_IP=imcat.in           #ftp地址
FTP_backup=backup         #ftp上存放备份文件的目录,这个要自己得ftp上面建的
WEB_DATA=/home/www        #要备份的网站数据
#你要修改的地方从这里结束
 
第四步:测试脚本是否OK
sh /root/AutoBackupToFtp.sh
 
第五步:设置定时任务
chmod +x /root/AutoBackupToFtp.sh  (赋予权限)
crontab –e    (设置自动任务)
30 05 * * * /root/AutoBackupToFtp.sh   (添加这条语句后保存退出)(本示范表示05:30执行)
 
注意事项:
1、默认关闭了发送mysql备份到邮箱,可自行编辑脚本打开。(要先安装依赖组件 yum install sendmail mutt)
2、脚本可以在线编辑或下载到本地编辑,本地编辑请使用Notepad++之类的软件,勿要使用windows自带的记事本。
3、本文转载 http://www.kwx.gd/CentOSApp/CentOS-Auto-Backup.html 修改而成,主要针对CentOS系统。

centos 备忘录 20140429

Poon 发表于 学习备忘录 分类,标签:
0

1、安装的时候选择了简体中文,装好后使用Xshell连接发生中文乱码的状况

我装的是centos6.3,对中文兼容性还是比较好的。通过其他软件测试,是可以正常显示中文的,所以排除是这台新装系统的字库问题;于是检查Xshell的软件设置,发现编码是“默认语言”,于是将其改为“UTF-8”,问题顺利解决。

 

2、修改好时间,但重启后依旧会快8小时的问题

这是由于centos将硬件保存的时间(BIOS时间)认作是UTC时间(世界标准时间),centos安装的时候我选择的是上海地区,所以系统时间应该是UTC+8,也就是BIOS时间+8小时。

当我们使用date命令查看时间的时候,显示给出的时间是CST,这个CST在这里的意思是:China Standard Time;但是需要注意的是,当我们调整系统时间的时候,需要先将这个CST时间设置为北京时间减去8小时(也就是UTC时间),而后再使用 hwclock –w 命令将其写入BIOS (否则,重启后centos重新读取BIOS时间作为UTC,CST就会快8小时了;或许有更好的办法解决这个问题,但是作为新手,还是暂时就用这个办法比较容易简单点,以后再研究更深层次的吧)

===============update 2014/04/30===============

昨天以为问题暂时解决了,但没想到的是,系统重启一次,时间就会增加8小时,而且是不断累加….

于是继续研究,查了N多资料,终于理清了里面的头绪:

hwclock 的意思是 硬件时钟(hardware)

Linux系统下有两个时间:一个是系统时间(系统里面的),一个是硬件时间(BIOS存储的)

系统每次启动的时候都会读取硬件时间,进行对应处理,然后赋给系统时间

 

CentOS的环境下,对BIOS的时间有两种定义:localtime、UTC

可以通过 hwclock –debug查看:Hardware clock is on local time 还是 UTC

CentOS的环境下,/etc/sysconfig/clock 这个文件里定义系统的时间是否使用UTC时间

以上两个条件就是系统启动时读取BIOS时间后的处理规则,具体果如下: (针对+0800时区)
1. hwclock 设定为 localtime,/etc/sysconf/clock 中的 UTC=true ,系统时间=BIOS时间-8小时
2. hwclock 设定为 localtime,/etc/sysconf/clock 中的 UTC=false,系统时间=BIOS时间
3. hwclock 设定为 UTC,/etc/sysconf/clock 中的 UTC=true,系统时间=BIOS时间
4. hwclock 设定为 UTC,/etc/sysconf/clock 中的 UTC=false,系统时间=BIOS时间+8小时

这就是CentOS系统启动之后对时间的处理过程,搞明白这个,问题就很明白了!

 

我的情况是:hwclock 设定了 UTC,/etc/sysconf/clock 中的 UTC=false,所以,CentOS每次启动系统都会加上8小时 (我按照网上的教程设置了系统时间与硬件时间同步,所以每次都会增加8小时,这就是遇病乱问医的结果,因为他们的那些解决方案并非针对我这种情况的)

所以解决问题的方法是:
1、hwclock –localtime 设置hwclock为localtime
2、vi /etc/sysconf/clock 修改UTC=false
3. date -R 确认时区为+0800,不正确请修改
4. date 确认北京时间正确,不正确请修改
5. hwclock -w 将系统时间强行写入BIOS
6. reboot 查看是否有效?

===============update 2015/09/07===============

cnetos6.5 安装过程指定上海时区,安装完成后系统时间总是快8小时的问题,似乎不再自动同步到bios

所以最简单的办法就是进BIOS将时间调成utc (也就是北京时间减去八小时)

强迫症患者则可以通过下面步骤操作

1. 编辑文件 # vi /etc/sysconfig/clock 设置bios时间不作为utc

ZONE="Asia/Shanghai"
UTC=false
ARC=false

2. 校准系统时间并设置bios时间与系统时间一致均为cst上海时区

# ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
# ntpdate asia.pool.ntp.org
# /sbin/hwclock –systohc

 

===============update 2014/04/30===============

3、双网卡上网的问题

a. IP的设置

vi  /etc/sysconfig/network-scripts/ifcfg-eth0  如下是参考项(文件中有的话直接修改,没有的话就手动添加)

DEVICE=eth0 #描述网卡对应的设备别名
HWADDR=00:22:46:0C:12:02  #对应的网卡mac地址
ONBOOT=YES  #设置为yes时,系统启动时激活此设备 (此条重要)
BOOTPROTO=static  #设置网卡获得ip地址的方式,可以是static,dhcp或bootp
IPADDR=192.168.0.2  #IP地址(网卡设置成static时才需要)
NETMASK=255.255.255.0 #网卡对应的网络掩码
GATWAY=192.168.0.1 #网卡对应的网络地址,也就是所属的网段
DNS1=8.8.4.4
DNS2=8.8.8.8

vi  /etc/sysconfig/network-scripts/ifcfg-eth1  编辑另外一块网卡(mac地址一般是自动的,可以区分对应网口)

然后重启网络服务即可。(如不行的话,reboot试试)

 

b. 修改默认上网的网关

vi  /etc/sysconfig/network  添加如下内容

GATEWAY=拿来上网的网卡的网关地址

然后重启网络服务即可。(如不行的话,直接reboot试试)

 

c. 我的情况是,eth1是内网地址(自动获取地址),eth0是公网地址(静态网络地址),起初是走的是eth1,一切正常,但当我将默认网关修改为eth0,出现域名无法解析的问题

我的第一反应是DNS设置问题,于是修改了/etc/resolv.conf,再进行测试发现域名可以解决了;但重启电脑之后,域名又无法解析,查看/etc/resolv.conf,发现dns服务器变成了我eth1的(eth1用的是电信DNS,而eth0是移动线路,所以无法使用电信的DNS)

也就是说,重启之后,/etc/resolv.conf 会自动重写….. 于是我将eth1的DNS修改成了8.8.4.4, 8.8.8.8 (这是Google提供的DNS服务器,不管移动还是电信有联通,都可以用的)

LNMP安装问题

Poon 发表于 学习备忘录 分类,标签:
0

又折腾了一个新VPS,系统是 CentOS 6.2 32位,安装LNMP过程发生了两个问题:

1、安装完LNMP之后,reboot重启CentOS之后,网页无法打开

首先排查是否80端口被其他程序占用,查询得到占用80端口的进程是2个nginx,于是kill掉这两个进程,然后重启nginx,结果问题还是没能解决。

于是百度了一下,看到有阿里云主机重启后网页无法打开的解决方案,大概是说阿里云主机的Linux系统内核有改动,导致Nginx无法启动,直接执行 echo “/usr/local/nginx/sbin/nginx”>>/etc/rc.local? 添加一条开机启动规则即可。但是这个方案依旧不适用我的情况,因为我查看的结果是nginx已经启动但网页无法打开的状况。

于是继续寻找答案…. 到最后发现其实是防火墙的问题!我关闭防火墙 /etc/init.d/iptables stop 网页就能恢复正常访问!不关闭防火墙直接增加80端口通过的步骤如下:

/etc/init.d/iptables status?? 查看防火墙规则

/sbin/iptables -I INPUT -p tcp –dport 80 -j ACCEPT? 添加80端口开放规则 (dport前面是两个-)

/etc/rc.d/init.d/iptables save?? 保存文件

/etc/init.d/iptables restart?? 重启防火墙服务

 

2、升级php之后,mysql变成到了mysqlnd 5.0.10 (我本来安装的是5.5版本)

探针显示:mysqlnd 5.0.10 – 20111026 – $Id: c85105d7c6f7d70d609bb4c000257868a40840ab $? 我查了一些资料才知道原来是我搞混了, 探针显示是客户端的MySQL版本、而非服务器端的,探针没有连上数据库所以无法得到服务器的准确版本。可以通过在shell终端输入 rpm -qa |grep mysql 或其他命令查看MySQL版本,也可以通过web浏览器登陆phpMyAdmin也能看到MySQL版本。

LNMP自带了php的升级脚本,我本来以为是用它升级php导致了MySQL的降级,但实际上探针看到的版本是客户端的,我的MySQL其实还是5.5版本的。针对客户端与服务端的区别,摘录如下:

Mysql Native驱动(Mysql Native Driver 简称:mysqlnd )在PHP5.3.0版本中被引入。PHP5.4之后的版本mysqlnd被作为默认配置选项。 有zend 公司开发的MySQL数据库驱动,采用PHP开源协议(即 PHP license)避免了任何可能存在的版权问题。

(摘自:http://baike.baidu.com/view/2630684.htm

也就是说,mysqlnd是php自带的、连接mysql的工具,php探针只能看到它是用什么客户端连接到mysql的。