一次网站性能排查实录

news/2024/5/20 14:16:37/文章来源:https://blog.csdn.net/weixin_34082177/article/details/90072965

接到一个求助电话,说是有个阿里云上的服务器,有性能瓶颈,但又没有什么具体的数据,只是说偶尔客户端有少数连接不上,或者连接会突然中断。我的天,最怕这种状况了,还得自己去找问题表现是什么,再去找什么原因所致。----懒人可直接点此处,不必辛苦看文字


因为是线上的环境,得分两步进行。先检查,看系统或者应用存在什么明显的印迹,分析原因和处理方法;协商什么时候可以处理,处理风险是什么。


怕影响用户体验,白天还不让搞。月黑风高,家里有没暖气啊(用一块闲置显卡挖矿取暖),没办法,只好熬夜苦战一番。


通过了解,该云主机带宽12M,其他方面的配置,我自己登录看就好。

既然收到带宽,就先看它了,看了好一阵,也不到10M嘛。

blob.png

其他资源配置为:

(1)cpu 8core

(2)内存 16G

(3)硬盘 50G系统加120G外挂空间。

其中系统负载一直稳定不高,IO也还过得去,系统日志也无明显的报错信息。查看网络状态,TIME_WAIT相对于ESTABLESHED来说,高了不少(因为文章为事后所写,无法再重现了)。根据经验,大致可以判断引起TIME_OUT高的原因主要有两种:一种是系统参数(sysctl.conf)设置,另一种就是应用服务配置。前一种比较好办,乘访问量少的时候,偷偷的修改/etc/sysctl.conf(修改前一定要记得备份哟),然后重载 sysctl -p,再执行netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}',发现TIME_OUT的数量并没有减少多少。由此可知,最大的可能就在系统上边的应用。


当然,作为系统管理员,不可能啥都去问人家,你上边安装了什么,都在啥目录啊,程序之间都什么关联?只要有系统登录权限,哪能难住咱们呢!敲ps auxww |more 加一点点耐心,能查个八九不离十。不就是一个nginx + php + mysql 嘛,挨个检查,应该能查到问题所在。这一回车,好多php进程呢,屏幕翻滚了好几屏。心想,没那么多连接数,跑那么多进程干啥呢?做过过滤,数一下php进程数,好家伙301个。


我有个习惯,喜欢从后边往前边查。于是就从数据库开查,show processlist,没线程连接上来,奇怪了啊。还以为自己眼花,又执行了好几遍,还是这样。检查mysql错误日志,数据目录,毫无所获,难道不是用这个mysql?吃个橘子压压惊,查看网络状态,看它连接到哪里去了。

blob.png

居然没用本机的mysql(不知道装这个干啥),赶紧电话问,说是购买了阿里云的mysql服务,好吧,看来这个就不用查了。


接下来,该看看nginx了。这一查,还真找到几个不顺眼的地方。按照我的习惯,如果系统上要运行多个web站点,一般都会用明确包含的方式对配置文件进行书写,这样做的好处是,看到主配置文件,就知道有多少站点;而且做维护的时候,如果某些站点要临时变更或者变更后整个web服务启动不了,就可以通过注释掉相关的那行包含(include)语句。最不喜欢谁用什么 include *.conf,你写起来省事,可是后边维护就不那么省事。

blob.png

没办法,我认了。再进具体包含文件的目录,随机打开一个,截取一段如下:

blob.png

包含里边嵌套包含,那好,我们就看看它这个包含里边写的啥:

[root@iZm5e64s4c3fznr1kxv1qaZ conf]# more enable-php.conf 

        location ~ [^/]\.php(/|$)

        {

            try_files $uri =404;

            fastcgi_pass  unix:/tmp/php-cgi.sock;

            fastcgi_index index.php;

            include fastcgi.conf

又有一个嵌套,狂晕啊!继续看这个fastcgi.conf,就是一个fastsgi_params文件的副本。

fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;

fastcgi_param  QUERY_STRING       $query_string;

fastcgi_param  REQUEST_METHOD     $request_method;

fastcgi_param  CONTENT_TYPE       $content_type;

fastcgi_param  CONTENT_LENGTH     $content_length;


fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;

fastcgi_param  REQUEST_URI        $request_uri;

fastcgi_param  DOCUMENT_URI       $document_uri;

fastcgi_param  DOCUMENT_ROOT      $document_root;

fastcgi_param  SERVER_PROTOCOL    $server_protocol;

fastcgi_param  REQUEST_SCHEME     $scheme;

fastcgi_param  HTTPS              $https if_not_empty;


fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;

fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;


fastcgi_param  REMOTE_ADDR        $remote_addr;

fastcgi_param  REMOTE_PORT        $remote_port;

fastcgi_param  SERVER_ADDR        $server_addr;

fastcgi_param  SERVER_PORT        $server_port;

fastcgi_param  SERVER_NAME        $server_name;


# PHP only, required if PHP was built with --enable-force-cgi-redirect

fastcgi_param  REDIRECT_STATUS    200;

各位看官,再往下看这个文件,又来了个fastcgi_pass 127.0.0.1 ,是要用什么方式关联php呢?前边那个include指定的"fastcgi_pass  unix:/tmp/php-cgi.sock;" 后边又跟这么一个是什么用意?

blob.png

看到没有,这个fastcgi_pass 127.0.0.1 根本没起作用啊,可能是从网上找的,胡乱粘贴一通。另外,也从php那边印证一下,确认服务是否有tcp 9000端口处于监听状态。

[root@iZm5e64s4c3fznr1kxv1qaZ ~]# netstat -anp|grep 9000|wc -l|grep -v grep

0

打开其它站点配置文件,全是这个搞法。得统一做规范,方便自己也是方便他人嘛!不过乱归乱,还是能正常运行,nginx本身也不会对性能产生太大的影响。由这里可以推断,php估计也是胡乱从别的地方复制过来的配置,其内容如下:

[global]

pid = /usr/local/php/var/run/php-fpm.pid

error_log = /usr/local/php/var/log/php-fpm.log

log_level = notice


[www]

listen = /tmp/php-cgi.sock

listen.backlog = -1

listen.allowed_clients = 127.0.0.1

listen.owner = www

listen.group = www

listen.mode = 0666

user = www

group = www

pm = dynamic


pm.max_children = 300

pm.start_servers = 80

pm.min_spare_servers = 80

pm.max_spare_servers = 300



access.log = /mnt/log/phplog/$pool.access.log

access.format = "%R - %u %t \"%m %r%Q%q\" %s %f %{mili}d %{kilo}M %C%%"


pm.max_requests = 1024

request_terminate_timeout = 0


request_slowlog_timeout = 120

slowlog = /var/log/slow.log

这几个选项值,直接与性能相关。查看php进程数,一直就是设定的数量300(主进程不算)。最大300,而且一直维持不变,新来的请求无法获得新的进程,于是就只好杀掉已经运行的(有可能用户的连接还在),类似于自杀,可以从php的日志里可以看到大量的进程自杀消息。

blob.png

一般情况下,应该把最大子进程数(pm.max_children = 300)设置得大一些,最大请求数(pm.max_requests)也需要设置大一些。


把这些问题,记录好汇总以后,电话跟其他人沟通,得到答复是等相关人等在线的时候进行修正,万一业务上有问题,可以一起协助处理,但得等两天以后。欲知详细的操作过程,调整后的效果,请猛戳此处即可。



















本文转自sery51CTO博客,原文链接:http://blog.51cto.com/sery/2053947 ,如需转载请自行联系原作者

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_820658.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何生成kml文件_帝国CMS如何自动生成sitemap.xml网站地图文件

登录网站的后台http://你的域名/e/admin/进入后台栏目 》增加自定义页面 》选择直接页面&#xff0c;页面名称为&#xff1a;网站地图&#xff0c;文件名修改为 ../../sitemap.xml<?xml version"1.0" encoding"UTF-8"?>?>[!--news.url--]daily…

《梦公园》网站策划设计

呈现奢华视觉体验&#xff0c;《梦公园》网站策划设计 公元2005年底 北京VNOISE 为 梦公园 开始筹划网站&#xff0c;打造符合梦公园公司独特气质的网络形象策划和网站设计。 项目地址&#xff1a;http://www.dreamgarden.com.cn北京VNoise视觉互动公司&#xff1a;http://www.…

基于Python-Flask实现的网站例子

概述 使用Flask写的体育网站 包括&#xff08;注册 论坛 文章评论 组建战队 后台管理&#xff09;等功能 示例地址文中有写 萌新 请多指教详细 代码下载&#xff1a;http://www.demodashi.com/demo/12380.html 项目示例地址: 网站演示 一、环境搭建 1. 安装配置python3.6 示例网…

北美程序员实用网站

2019独角兽企业重金招聘Python工程师标准>>> 刷题类 https://leetcode.comhttps://www.hackerrank.com 面试工具/代码协同 https://coderpad.io 在线预约 https://www.zoho.com/calendar 问答社区 https://piazza.com 培训机构 https://www.bittiger.io 免费课程 h…

《大型网站技术架构:核心原理与案例分析》读书笔记 - 第2篇 架构

第2篇 架构 4 瞬时响应&#xff1a;网站的高性能架构 34 4.1 网站性能测试 35 性能测试是性能优化的前提和基础&#xff0c;也是性能优化结果的检查和度量标准。 4.1.1 不同视角下的网站性能 35 用户&#xff1a;直观感受到的快慢开发&#xff1a;应用程序本身运维&#xff1a;…

ASP.NET : 如何为网站添加自定义的文件类型

我们知道&#xff0c;在ASP.NET网站中&#xff0c;默认页面的扩展名是aspx.要想实现在网站中提供特殊的文件类型&#xff0c;例如Test之类的,就可以考虑通过HttpHandler来实现。下面是一个小的例子 1. HttpHandlerusing System; using System.Collections.Generic; using Syste…

个人博客建站最全解析

大家好~又见面了。 今天呢我想给大家&#xff0c;也给我自己&#xff0c; 对我的个人网站yanyy.cn/yanyy 做一个全面的整理和分析。 也给有这方面想法的朋友一个参考。 做网站的有爱好也有带有目的性的。 不过我还是希望大家能够传播正能量~ 进入正题 网站首页 看到上图&#x…

网站列目录问题

1.用apache搭建好网站发现可以列目录 修改/etc/apache.conf 将此处Index删除掉保存重启apache即可 转载于:https://www.cnblogs.com/websecyw/p/10608848.html

[转] IIS 启动和停止单个网站

本文转自&#xff1a;http://technet.microsoft.com/zh-cn/library/cc775930(WS.10).aspx 默认情况下&#xff0c;站点将在计算机启动时自动启动。停止站点不会影响其他正在运行的 Internet 服务。暂停站点将禁止 Internet 服务接受新的连接&#xff0c;但不影响正在进行处理的…

关于onmouseover和onmouseout的bug

总结了一下关于使用onmouseover以及onmouseout会出现的bug 首先简单的布局&#xff1a; <div id"box"><div>这是一个内容</div> </div> 简单写了一下样式&#xff0c;效果如下&#xff1a; js代码如下&#xff1a; var oBox document.getEl…

Visual Studio 2010 网站发布方法 总结

Publish method &#xff1a; Web Deploy Service URL&#xff1a;localhost Site/application: /lm/w3svc/1/ROOT/MvcMusicStore 这样就能往本机的IIS发布。比VS2008的直观地往本机发布的方式&#xff0c;用户体验差多了。哎&#xff0c;哥们凑合用吧。 其他方法&#xff1a;&…

阿里云助力中小企业建站 在线免费自助建站成新用户首选

阿里云助力中小企业建站 在线免费自助建站成新用户首选 提供云计算服务的行业头部企业-阿里云&#xff0c;对于广大中小企业来说&#xff0c;应该都不陌生。在企业需要建设自己官方网站&#xff0c;或者个人需要建设个人网站时&#xff0c;一般都需要购买网站空间或者云服务器来…

大型网站技术架构(三)架构核心要素

2019独角兽企业重金招聘Python工程师标准>>> 所谓架构&#xff0c;一种通俗的说法就是“最高层次的规划&#xff0c;难以改变的决定”&#xff0c;这些规划和决定奠定了事物未来发展的方向和最终的蓝图。 而软件架构即“有关软件整体结构与组件的抽象描述&#xff0…

把腾讯微博般到自己网站

原文与代码下载地址&#xff1a;http://www.cckan.net/thread-461-1-1.html 代码很简单&#xff0c;大家看下面一串代码http://follow.v.t.qq.com/index.php?cfollow&aquick&namecsharpcckan&style3&f1 只要把csharpcckan换成你的微博用户名就行了。 在浏览器…

物理机访问虚拟机中搭建的网站的方法以及遇到的问题解决

环境描述&#xff1a; 物理机中没有搭建任何环境&#xff0c;将apache搭建在虚拟机&#xff08;vmware win7 x64&#xff09;中&#xff0c;使用wamp&#xff0c;apachemysql&#xff0c;使用物理机如何访问虚拟机中的php网页。 连通网络 首先我们要使物理机和虚拟机在一个内…

网站互点排名掉了网站互点排名掉了网站互点_如何快速提升网站排名?

想要快速提升网站排名是每个企业都想做的事情&#xff0c;特别是一些刚建立的新站&#xff0c;想要快速的被百度收录而达到有排名的效果。提升网站排名没有捷径可走&#xff0c;用其他的手法会使网站被K掉&#xff0c;这样得不偿失&#xff0c;还是要一步一步的来从基础开始提升…

layui关闭页面判断数据是否有修改_怎么检测网站是否被劫持,怎么检测网站是否被劫持,检测方法...

说到网站被劫持&#xff0c;很多站长并不陌生&#xff0c;也知道网站被劫持的危害&#xff0c;可如何查看判断网站是否被劫持及处理方法&#xff0c;是很多网站头疼的问题。那么如何才能知道自己的网站被劫持了呢&#xff1f;怎样检测网站被劫持也是一个很严峻的问题&#xff0…

如何观看一些被屏蔽的网站_如何做好网站优化排名技巧有哪些?

网站优化是网站建设之后的工作&#xff0c;并且对整个网站有非常重要的作用。做网站优化排名是一个攻坚战&#xff0c;那如何做好网站优化排名技巧有哪些呢?今天久格科技为大家科普下如何做好网站优化排名技巧有哪些呢?如何做好网站优化排名技巧有哪些呢?1、做好网站关键词定…

开源免费的网站---编程绘图

https://www.echartsjs.com/index.html-------开源免费的网站---编程绘图

wordpress 父菜单_网站如何添加导航菜单?只需wp_list_categories就可搞定

在前面的章节中&#xff0c;我们介绍了基于page页面的wordpress网站导航菜单的函数——wp_list_pages()。今天&#xff0c;我们再来介绍第二种导航菜单的方式——基于wordpress网站的文章分类目录的导航菜单&#xff0c;这种wordpress导航菜单是通过wp_list_categories()函数来…