坑一(解决在运行npm出现的报错):

昨日我在运行安装npm依赖的时候弹出了这个报错,所以我们简单的来解决下。

宝塔安装完环境后,使用 npm,无论什么命令,都带有报错信息。

报错为:

npm WARN config init.module Use `--init-module` instead.

解决方法

找到一下文件:/www/server/nodejs/v16.17.0/etc/npmrc

将 init.module 修改为 --init-module。

也可以到宝塔的nodejs版本管理器,里面已安装的node环境变量里改即可完美解决。

坑二(腾讯云服务器安装受控端失败处理办法):

pv-1.4.6-1.el7.x86_64.rpm FAILED 
http://mirrors.tencentyun.com/epel/7/x86_64/p/pv-1.4.6-1.el7.x86_64.rpm: [Errno 14] curl#6 - "Could not resolve host: mirrors.tencentyun.com; Name or service not known"| 0 B --:--:-- ETA 
Trying other mirror. 


Error downloading packages: 
pv-1.4.6-1.el7.x86_64: [Errno 256] No more mirrors to try. 

ERROR: install appnode-agent failed: exit status 1

有看到类似Could not resolve host: mirrors.tencentyun.com这样字眼的报错其实本质上都是一样的报错。

这是由于腾讯云自带的软件源配置有错误导致的(好无语),可将系统软件源改为阿里云镜像,请参考:点我跳转

咱们在命令行输入以下命令替换:

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-`rpm -q --qf "%{version}" centos-release`.repo

然后将无效的软件源删除,使用以下命令做备份:

mv /etc/yum.repos.d/CentOS-Epel.repo /etc/yum.repos.d/CentOS-Epel.repo.bak

最后执行下命令更新缓存:

yum makecache

这样就能安装你想安装的东西啦!完美解决

坑三【SSH远程连接断开后让程序继续运行解决办法】

我们在跑脚本的时候,或者远程连接服务器执行Python或者下载等操作时,当我们断开ssh连接后代码将不会继续执行!!!那么我们怎么办呢?

解决办法:

1.首先安装screen

yum install -y screen 或 apt install -y screen

2.创建screen实例

screen -S me(实例名字随意起)

3.执行要自己要执行的代码或者下载等操作

4.断开连接(代码还在执行)

5.验证

screen -r me

6.其他

1、查看所有实例:

screen -ls

图片-1668063687928

2、删除某个screen实例

screen -X -S 编号 quit(即下面所框出来的部分)

图片-1668063763119

经验(Linux VPS通过安装CPULimit来限制CPU使用率)

今天给一个客户解决服务器cpu一直处于满载的情况,简单的说就是调优吧。

一开始以为是mysql服务占用过高导致cpu负载高,看了下内存占用也不多,于是在mysql的性能调整里面给他调低了优化方案。

发现cpu还是比较高,再猜是php7.2和7.1的锅,于是也调低了并发方案。

再去top看了下,有十几个php-fpm的进程,于是调低了pm.max_children和max_spare_servers

下面补充几个命令统计相关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

重启php-fpm

1. 停止命令
 
pkill php-fpm
 
2.重启或启动命令
 
php-fpm -R

或
/alidata/server/php/sbin/php-fpm

说明:我们手上经常有很多廉价的VPS,有时候使用某些软件应用的时候,会出现CPU跑满的情况,而长时间跑满会被VPS商家停掉,所以这里我们需要想办法来限制进程CPU使用率,这里就说个教程。

安装cpulimit
使用root运行命令:

#debian/ubuntu系统

apt install -y cpulimit

#RHEL/Centos/Fedora系统

yum install epel-release cpulimit

用法
1、常规用法

#限制firefox使用30% cpu利用率

cpulimit -e firefox -l 30

#限制进程号1313的程序使用30%cpu利用率

cpulimit -p 1313 -l 30

#限制绝对路径下该软件的cpu利用率

cpulimit -e /usr/local/nginx/sbin/nginx -l 50

2、限制所有进程的CPU使用率
默认情况下cpulimit只能对已经存在的进程进行限制,但是设置此脚本为随机自启动即可,它会对所有进程(包括新建进程)进行监控并限制(3秒检测一次,CPU限制为75%)

这就可以防止因为CPU使用率过高而被ban了!

#!/bin/bash 

while true ; do

id=`ps -ef | grep cpulimit | grep -v "grep" | awk '{print $10}' | tail -1`

nid=`ps aux | awk '{ if ( $3 > 75 ) print $2 }' | head -1`

if [ "${nid}" != "" ] && [ "${nid}" != "${id}" ] ; then

  cpulimit -p ${nid} -l 75 &

  echo "[`date`] CpuLimiter run for ${nid} `ps -ef | grep ${nid} | awk '{print $8}' | head -1`" >> /root/cpulimit-log.log

fi

sleep 3

done

保存到 /root/cpulimit.sh,会自动生成日志文件 /root/cpulimit-log.log。

然后修改 /etc/rc.local 在对应位置加入 /root/cpulimit.sh 再重启系统,就会全程限制各个进程的CPU使用了!

注意事项
l、后面限制的cpu使用量,要根据实际的核心数量而成倍减少。40%的限制生效在1核服务器中,如果是双核服务器,则应该限制到20%,四核服务器限制到10%以此类推。
2、root用户可以限制所有的进程,普通用户只能限制自己有权限管理的进程。

Q.E.D.