• 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
  • 相关阅读:
    cJSON函数用法
    Kibana:创建你的第一个仪表板
    聚焦网安周 | 从技术框架到方案落地,全息网御探索数据安全实践的进化之路
    MySQL中的大表优化方案
    tensorflow跑手写体实验
    rosbag保存 pcd和image
    PTA 编程题(C语言)-- 连续因子
    计算机毕设(附源码)JAVA-SSM基于微信平台的匿名电子投票系统
    C/C++ 泛型模板约束
    数字逻辑设计(5)
  • 原文地址:https://blog.csdn.net/Jack_num1/article/details/127750280