阿里云服务器有经典网络和专有网络两种类型,经典网络拥有独立服务器的功能;而专有网络拥有私网ip可供多台服务器做分布式开发时进行相互连接。
目前我在使用专有网络时,我用脚本程序开启一个端口(公网IP+端口号)失败,错误提示为:
PHP Warning: stream_socket_server(): unable to connect to tcp://公网IP:端口号 (Cannot assign requested address) in /home/wwwroot/.......
解决办法:1、使用ifconfig检查公网是否开放(一般只会开放私有网络);2、检查防火墙并关闭防火墙 :service IPtables status|restart|stop|off|on;3、通过 netstat -lntp 检查端口是否有占用(如果没有该端口那么需要把这个端口启用,之后外网才可以访问得到);4、对专有网络类型的ecs服务器,添加该端口的安全组规则后,重启实例。
关于上面的错误:阿里云给的反馈是: 截图中所描述的问题是由于客户端频繁的连服务器,并且由于每次连接都在很短的时间内结束,导致很多的TIME_WAIT,以至于用光了可用的端 口号所造成的,针对此种情况,请采用以下方法(命令)解决:
1.sysctl -w net.ipv4.tcp_timestamps=1 ;
2.sysctl -w net.ipv4.tcp_tw_recycle=1 ,请知悉!【备注:命令修改须是管理员用户】