frp解决高并发崩溃问题(笨方法)

前言

本站测试过很多次攻击,一开始qbs上100的时候frp就会崩溃,后面我就使用了最新版的frp分别放在了服务端和客户端上,后面测试Qbs500+没掉线。

但确实不知道frp崩溃的原因,可能间接性的和并发量有关联,毕竟并发一上来了frp就会莫名其妙的收发不了数据。

这里的解决办法就是用sh脚本,主服务器每分钟都对网页进行存活检测,如果检测到页面无法访问,则远程ssh连接节点服务器分别重启frps。

解决办法

这里使用AI的回复建议。

问:如何实现对网站状态的监控,如果发现网站无法正常显示那么远程服务器执行shell

答:

实现对网站状态的监控并在网站无法正常显示时远程执行Shell脚本,通常涉及到以下几个步骤:

  1. 监控网站状态
    • 使用curlwget或其他HTTP客户端来定期检查网站的响应。
    • 检查返回的HTTP状态码,如200 OK表示成功,4xx5xx系列的状态码通常表示有错误。
    • 还可以检查返回的页面内容,确保包含某些关键词或没有错误消息。
  2. 编写监控脚本
    • 编写一个Shell脚本,使用curlwget来检查网站状态。
    • 根据返回的状态码或页面内容判断网站是否正常。
    • 如果发现网站异常,则执行相应的操作。
  3. 在远程服务器上执行Shell脚本
    • 如果监控脚本和需要执行的Shell脚本在同一台服务器上,可以直接在监控脚本中调用。
    • 如果不在同一台服务器上,可以通过SSH连接远程服务器并执行脚本。这通常需要使用SSH密钥进行无密码登录,或者使用SSH密码认证(但请注意,存储明文密码是不安全的)。
  4. 设置定时任务
    • 使用cron或其他定时任务工具来定期运行监控脚本。
    • 根据需要设置合适的检查频率,如每5分钟、每小时等。

下面是一个简单的示例,展示如何编写一个监控脚本并在网站异常时通过SSH在远程服务器上执行Shell脚本:

监控脚本(check_website.sh)

#!/bin/bash  
  
# 网站URL  
WEBSITE_URL="http://example.com"  
  
# 使用curl检查网站状态  
RESPONSE=$(curl -s -o /dev/null -w "%{http_code}" "$WEBSITE_URL")  
  
# 检查HTTP状态码  
if [ "$RESPONSE" != "200" ]; then  
    echo "网站 $WEBSITE_URL 无法正常显示,状态码: $RESPONSE"  
      
    # 通过SSH在远程服务器上执行脚本  
    SSH_USER="your_ssh_user"  
    REMOTE_SERVER="remote_server_ip"  
    REMOTE_SCRIPT="/path/to/remote_script.sh"  
    ssh -o StrictHostKeyChecking=no "$SSH_USER@$REMOTE_SERVER" "$REMOTE_SCRIPT"  
else  
    echo "网站 $WEBSITE_URL 显示正常"  
fi

远程服务器上执行的脚本(remote_script.sh)

#!/bin/bash  
  
# 这里写你需要执行的命令或操作  
echo "网站异常,执行紧急操作..."  
# 例如重启服务、发送邮件通知等

设置定时任务

打开当前用户的crontab文件:

crontab -e

添加一行来定期运行监控脚本,例如每5分钟运行一次:

*/5 * * * * /path/to/check_website.sh

保存并关闭文件。

注意

  • 确保所有脚本都有执行权限(使用chmod +x script.sh)。
  • SSH连接远程服务器时,建议使用SSH密钥进行身份验证,以提高安全性。
  • 在生产环境中,确保对所有的操作进行充分的测试和验证,以避免不必要的服务中断或安全问题。

注意

本站使用的方法与这个逻辑差不多,但不是这样配置的,希望访者可以学习一下里面的思路,对自己的frp进行优化。

阅读剩余
THE END