webman 报错解决手册

皇甫繁
2023-12-01

简介

webman框架时当下最热门的PHP框架之一,但是往往我们在使用过程中难免会遇到各种各样的问题,特此在本文章内给大家给到解决方案以供参考。

(一) 安装异常

1.1 安装出现函数无法使用

1.1.1 解决方案

取消禁用函数: putenv 、exec、system 、shell_exec 、pcntl_fork、pcntl_signal、pcntl_alarm、pcntl_signal_dispatch、shell_wait

1.2 Address already in use

出错现象: stream_socket_server(): Unable to connect to tcp://0.0.0.0:8787 (Address already in use)

1.2.1 解决方案

  • 检查是否端口占用:netstat -tln | grep 8787
tcp        0      0 0.0.0.0:8787            0.0.0.0:*               LISTEN      23621/WorkerMan: wo 
  • 检查端口占用的进程:lsof -i:8787
COMMAND   PID USER   FD   TYPE    DEVICE SIZE/OFF NODE NAME
php     23621 root    4u  IPv4 810227978      0t0  TCP *:msgsrvr (LISTEN)
php     23622 root    4u  IPv4 810227978      0t0  TCP *:msgsrvr (LISTEN)
php     23623 root    4u  IPv4 810227978      0t0  TCP *:msgsrvr (LISTEN)
php     23624 root    4u  IPv4 810227978      0t0  TCP *:msgsrvr (LISTEN)
php     23625 root    4u  IPv4 810227978      0t0  TCP *:msgsrvr (LISTEN)
php     23626 root    4u  IPv4 810227978      0t0  TCP *:msgsrvr (LISTEN)
php     23627 root    4u  IPv4 810227978      0t0  TCP *:msgsrvr (LISTEN)
  • 删除进程:kill -9 PID

1.3 Linux端口被耗光

出错现象: dial tcp xx.xx.xx.xx:10101: connect: Cannot assign requested address

原因: 这种情况一般发生在高并发服务器上或者压测时会出现。
每个socket链接会占用本地一个端口,短链接使用毕后会立刻关闭,这时链接处于TIME_WAIT状态,本地的端口仍然被占用着。本地端口最多为6W个,如果在短时间内建立的大量的TCP短链接,本地端口会被TIME_WAIT迅速耗光,导致Cannot assign requested address

1.3.1 解决方案1

  • 开启端口快速回收
# 1、编辑系统配置文件
vi /etc/sysctl.conf
# 2、添加开启端口快速回收配置
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
# 3、执行配置
sysctl -p

1.3.2 解决方案2

  • 编辑系统配置文件:vi /etc/sysctl.conf
# 修改linux端口分配范围
net.ipv4.ip_local_port_range = 10000 65000
sudo sysctl  -w  net.ipv4.ip_local_port_range="10000 65000"

# 修改timewait状态的存在时长
sysctl net.ipv4.tcp_fin_timeout = 30 
sudo sysctl  -w  net.ipv4.tcp_fin_timeout=30 

# 修改timewait最大值
net.ipv4.tcp_max_tw_buckets = 40000
sudo sysctl  -w  net.ipv4.tcp_max_tw_buckets=40000
  • 执行配置:sysctl -p
 类似资料: