依赖代码部署/更新
|
|
全局安装代码库
|
|
|
|
|
|
memcache是一个多线程缓存服务器,通常用作缓存、存储session等非重要信息的存储
php有memcache、memcached两个扩展,memcached支持CAS
|
|
|
|
为缓解DNS超时问题,我们通常会引入DNS缓存服务器,常用的有DNSMASQ
DNSmasq的配置文件通常在/etc/dnsmasq.conf
首先去解析/etc/hosts文件,接着去解析/etc/dnsmasq.d/下的*文件,最后去解析resolv.dnsmasq.conf(里面定义了上游DNS)
|
|
今天通过kibana查看错误日志时发现有域名解析超时情况,不应该啊,明明已经启用了dnsmasq,并且服务调用量也不大,为啥会报错呢?继续观察发现服务只有这一台机器存在域名解析超时,其他机器都没问题。紧接着使用tcpdump抓包机器的dnsmasq也是工作正常没发现什么问题,对比下这台机器的的resolv.conf文件与正常机器的resov.conf
问题机器
|
|
正常机器
|
|
502: 网关或代理从上游得到无效的响应
504: 网关或代理等待上游响应超时
对于开启了keepalive的nginx在重启时会断开保持的连接(不管请求是否完成),对端对断开的连接操作会收到RST包
1.典型的TCP优化问题
nagle/delay ack/tck_cork
典型的TCP优化问题
1.服务端bind绑定端口时报错Address already in use
明明服务已经停止了,却还是无法绑定,这是因为TCP套接字状态TIME_WAIT引起的。该状态在套接字关闭后保留约2~4分钟,在TIME_WAIT状态退出后,套接字删除,该地址才能被重新绑定。
解决方法: 通过SO_REUSEADDR
来重用端口解决问题
reuseport 支持多个进程或线程绑定到同一端口,即创建N个reuseport套接字同时工作,当连接到来时内核会取一个套接字来处理它,这样就达到了负载均衡的目的。
使用select实现简单聊天室
运行服务端后,其他终端通过telnet 127.0.0.1 9999
连接服务器,开始聊天