• webman 报错解决手册


    简介

    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 
    
    • 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
  • 相关阅读:
    手把手教你用Java获取IP归属地
    ArrayLis集合扩容机制
    前端面试题及答案整理(2022最新版)
    3D感知技术(1)3D数据及其数据表示
    虚指针和虚函数表 vptr vtable
    商业化广告--体系学习-- 11 -- 业务实战篇 --流量优化:如何兼顾广告收入和用户体验?
    量化机器人如何实现投资自动化?
    CTFSHOW菜狗杯 web
    基于java(springboot)简历系统源码成品(java毕业设计)
    适配器模式 结构性模式之五
  • 原文地址:https://blog.csdn.net/Jack_num1/article/details/127750280