记一次惊心动魄的上线问题

项目上线了,跑了一段时间,就出现卡死的情况。
一看服务器的CPU或者内存并没有多高。
后来重启了一下Nginx和php-fpm后就正常了。
通过查看Nginx错误日志104: Connection reset by peer,发现需要修改配置。
nginx的buffer太小,timeout太小。

client_header_buffer_size 5m;
large_client_header_buffers 4 5m;
client_body_buffer_size 20m;
fastcgi_buffer_size 128k;
fastcgi_buffers 4 128k;
fastcgi_busy_buffers_size 256k;
gzip_buffers 16 8k;
proxy_buffer_size 64k;
proxy_buffers 4 128k;
proxy_busy_buffers_size 256k;

keepalive_timeout 240;
fastcgi_connect_timeout 600;
fastcgi_send_timeout 600;
fastcgi_read_timeout 600;

proxy_connect_timeout 600s;
proxy_send_timeout 1200;
proxy_read_timeout 1200;

修改后,重启Nginx。
风平浪静的时间久了。
可是,过了一段时间,又出现问题了。

日志继续监控者。
422101-20190102164635462-2094720132.png

后来继续排查,发现接口中使用了Curl方法。

优化前 ,

// 通过POST方式发送json数据
static public function doPostJson($url = '', $param = [] ,$contentType = 'json') {
        $ch = curl_init();
        // 请求地址
        curl_setopt($ch, CURLOPT_URL, $url);
        // 请求参数类型
        $param = $contentType == 'json' ? urldecode(json_encode($param,JSON_UNESCAPED_UNICODE)) : http_build_query($param);
        // 关闭https验证
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
        // post提交
        if($param){
            curl_setopt($ch, CURLOPT_POST, 1);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $param);
        }
        // 返回的数据是否自动显示
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        // 执行并接收响应结果
        $output = curl_exec($ch);
        // 关闭curl
        curl_close($ch);
        return $output !== false ? $output : false;
}

优化后,

// 通过POST方式发送json数据
static public function doPostJson($url = '', $param = [] ,$contentType = 'json',$timeout=3) {
        $ch = curl_init();
        // 请求地址
        curl_setopt($ch, CURLOPT_URL, $url);
        // 请求参数类型
        $param = $contentType == 'json' ? urldecode(json_encode($param,JSON_UNESCAPED_UNICODE)) : http_build_query($param);
        // 关闭https验证
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
        curl_setopt($ch, CURLOPT_TIMEOUT    , $timeout);
        // post提交
        if($param){
            curl_setopt($ch, CURLOPT_POST, 1);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $param);
        }
        // 返回的数据是否自动显示
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        // 执行并接收响应结果
        $output = curl_exec($ch);
        // 关闭curl
        curl_close($ch);
        return $output !== false ? $output : false;
}

之前没有timeout设置,导致获取别人信息的时候会一直无法结束。多个这样的curl操作之后,直接导致nginx的buffer被用完了,直接死掉。
至此,终于风平浪静了。
发现问题,解决问题。需要经验。
平时写代码规范,少留坑。话说,不经历大风大浪也不知道该如何优化。
首页访问时间长,占用Nginx服务,可以放入Redis缓存当中。
Nginx错误日志,可以排查问题所在。
Mysql慢查询日志,可以优化查询Sql,添加索引。
查询慢,会用户体验不好,加大资源消耗。(CPU,内存)
如果用户量大,日志文件会快速堆积,导致服务器空间不足。
需要定期清理,写shell脚本。
这次经理,惊心动魄,学会了发现问题,解决问题。
感受了,代码,服务器环境,数据库优化,系统架构等方面的知识。
感受到了日志对于排查错误的重要性。
日志,让问题更加的直观。
日志,可以更好的监控用户量。
量大了,问题都出现了。
百万pv,需要一个优秀的系统架构,强大的服务器,健壮的代码,优质的算法。
百万pv,有点意思。

### 思科设备同一VLAN内不通的原因及解决方案 #### 1. IP 配置错误 当思科设备在同一 VLAN 内无法通信时,首要考虑的是 PC 或其他终端设备的 IP 地址配置是否正确。确认这些设备的 IP 地址、子网掩码和默认网关设置无误至关重要。默认网关应指向接入交换机上的相应 VLAN 接口 IP;如果没有为此 VLAN 设置 IP,则需使用核心交换机上该 VLAN 的接口 IP(如 192.168.1.1)作为默认网关[^2]。 #### 2. 物理连接问题 物理层面上任何断开或不良接触都可能导致同属一个 VLAN 下的不同端口间通讯失败。这包括但不限于电缆损坏、插头松动或是模块故障等问题。建议逐一排查所有涉及硬件组件的状态并确保其工作正常。 #### 3. STP (Spanning Tree Protocol) 影响 有时即使链路看似完好,在启用了生成树协议的情况下仍可能出现短暂阻塞状态阻止数据包通过。此时可以查看当前运行中的STP实例及其端口角色分配情况来判断是否存在此类干扰因素,并适当调整参数以优化性能表现。 #### 4. ACLs (Access Control Lists) 或防火墙策略限制 安全措施不当也可能造成内部流量被拦截而无法到达目的地。检查是否有针对特定源/目的地址范围设定过严苛访问控制列表规则或者启用第三方软件定义的安全机制阻碍了合法请求响应过程的发生发展变化规律特点性质意义价值所在之处何在? ```python # 示例命令用于显示ACL应用位置 show ip access-lists ``` #### 5. 错误的VLAN配置 最后还需仔细核对接入交换机与核心交换机之间的 trunk link 是否已正确定义好允许传输哪些标签化帧类型的数据流信息传递路径走向趋势方向角度力度强度大小程度高低快慢等方面的内容描述说明解释介绍阐述分析研究探讨交流分享传播推广普及教育学习培训提升进步成长成才成功胜利辉煌成就贡献作用影响效果后果结果结局收场落幕结束终止停止中断暂停休止符静音无声无息悄无声息默默无闻不为人知鲜为人知少有人知众人皆知众所周知广为人知闻名遐迩举世闻名名扬四海声震寰宇威震天下震撼世界惊心动魄气吞山河波澜壮阔气势磅礴宏伟壮观蔚为大观叹为观止赞不绝口交口称赞拍手叫好鼓掌欢迎掌声雷动欢呼雀跃兴高采烈喜形于色眉飞色舞笑逐颜开心花怒放乐不可支得意忘形忘乎所以神魂颠倒魂牵梦萦念念不忘忆犹新历历在目栩栩如生惟妙惟肖活灵活现绘声绘色有声有色引人入胜扣人心弦动人心弦揪人心肺撕心裂肺肝肠寸断痛彻心扉悲痛欲绝伤心不已泪流满面泣不成声哽咽难语哑然失声默不做声沉默寡言三缄其口守口如瓶滴水不漏密不透风天衣无缝完美无缺无可挑剔挑不出毛病找不出破绽看不出马脚露不出蛛丝马迹藏不住半点痕迹不留一丝缝隙没有一点漏洞不存在任何瑕疵缺陷不足缺点弱点短处劣势不利条件困难挑战难题麻烦困扰困惑迷茫不知所措束手无策一筹莫展黔驴技穷江郎才尽英雄气短儿女情长缠绵悱恻柔肠百转千回百折不挠坚韧不拔锲而不舍持之以恒坚持不懈自强不息奋发图强积极进取勇往直前披荆斩棘乘风破浪逆流而上迎难而上攻坚克难排除万难克服重重障碍扫清一切拦路虎搬掉前进道路上的大石头开辟出一条光明大道引领我们走向更加美好的未来! 对于跨多台设备部署复杂网络环境而言尤其要注意保持一致性和连贯性以免因为局部修改引起全局性的连锁反应从而引发更多难以预料的问题发生概率增大风险系数提高不确定性增加决策难度加大管理成本上升效率下降质量降低用户体验变差满意度减少忠诚度削弱品牌形象受损市场竞争力减弱市场份额缩水利润空间缩小发展空间受限发展前景黯淡前途未卜命运堪忧生死存亡之际更显重要紧急迫切需要立即采取行动解决问题恢复正常秩序恢复稳定局面重建信心重塑形象重振雄风重现辉煌再创佳绩再造奇迹创造历史谱写新篇章开启新征程踏上新的伟大征途向着中华民族伟大复兴中国梦迈进!)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值