(一) 安装异常
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
1
检查端口占用的进程: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)
1
2
3
4
5
6
7
8
删除进程: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
2
3
4
5
6
7
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
1
2
3
4
5
6
7
8
9
10
11
执行配置:sysctl -p
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/Jack_num1/article/details/127750280