记一次入门级别的并发试验过程(暂时放弃)

环境:

a服务器使用curl_multi执行3000,4000,5000并发,访问b服务器一个静态html文件

问题:3000,4000并发基本稳定,5000并发时,有时候全部成功,有时候Recv failure: Connection reset by peer错误

需要解决:让5000并发成功率能够稳定

原因定位:出现改问题,是服务端发送了RST的tcp,其中win=0,客户端不再发包。

两种猜测:1 tcp连接数上限被拒绝(然而并不是,这些tcp的三次握手都已经完成并且发送了http请求)  2内存不够处理请求,所以服务端发送了win=0的rst包(目前比较有这个可能)

最后:暂时放弃试验,性能优化这块,内容太多了,涉及网络(tcp),cpu,内存(tcp使用的内存,程序使用的内存,php-fpm内存等等),服务器的配置优化。。。。我晕了

学到:

  1 php-fpm不会释放内存(导致执行curl_multi的服务器内存飙高宕机,每次top查看剩余内存,不够就要重启php-fpm),而且貌似是轮询调用php-fpm

  2 可以使用curl_multi执行并发请求

  3 可以使用popen代替exec同时打开多个进程(相当于并发执行某些命令)

  4 windows使用wireshark抓包,linux使用tcpdump抓包,常用 tcpdump -i eht1 src host xxx or dst host xxx -w filename

  5 使用netstat查看网络连接,和tcp迁移状态 netstat -lan|grep xxx.

    状态主要有sync_send,ESTABLISHED,

    fin_wait1(主动发送fin的一方等待ack响应前进入状态),

    fin_wait2(主动发送fin的一方,接到ack响应后,等待对方的fin前的状态),

    time_wait(主动发送fin一方收到对方fin并发送了ack确认后要断开之前进入的状态)

  6 卧槽,,好像没了,搞了几天,难道就学会这些?反思反思。。

时间: 2024-10-18 14:07:27

记一次入门级别的并发试验过程(暂时放弃)的相关文章

【夯实Mysql基础】记一次mysql语句的优化过程!

1. [事件起因] 今天在做项目的时候,发现提供给客户端的接口时间很慢,达到了2秒多,我第一时间,抓了接口,看了运行的sql,发现就是 2个sql慢,分别占了1秒多. 一个sql是 链接了5个表同时使用了 2个 order by和 1个limit的分页 sql. 一个sql是上一个sql的count(*),即链接了5个表,当然没有limit了(取总数). 2. [着手优化] 1)[优化思路] 第一条是 做client调用 service层的数据缓存 第二条就是 优化sql本身. 这里着重讲一下

记一次公司仓库服务器死锁过程

记一次公司仓库服务器死锁过程 仓库拣货卡死,排查了数据库的很多地方,都没有头绪,最后到SQL Server 错误日志里查看,终于发现了蛛丝马迹 EXEC xp_readerrorlog 0,1,NULL,NULL,'2015-09-21','2015-10-10','DESC' waiter id=process5c30e08 mode=U requestType=wait waiter-list owner id=process5c26988 mode=X owner-list keylock

记一个网络传输功能的实现过程

写在前面的话:功能是基于C/S模型的网络传输实现,要求是服务器端可以在局域网中任何机子上运行,客户端启动后自动寻找服务器端进行连接,之后,服务器端向已经连接的客户端发送命令,客户端根据命令执行相应的操作(即发送某个约定文件夹下的所有文件),并且客户端不需要用户操作. 1.思路 首先,对于这个功能的实现思路如下,因为服务器不确定在哪个机子上,所以为了寻找到服务器端,客户端需要发送广播消息,并且为了维护客户端在线,广播消息需要实现成心跳包(即定时发送广播消息).服务器监听心跳包,如果是新加入的客户端

记一次pending请求问题查找过程

情景再现 近期发现网站访问变慢,经常会出现请求无法响应的问题,一个请求长时间没有返回,导致页面出现504(Gateway Timeout),我们使用的nodejs+ngnix(反向代理). 猜测原因 服务器内存使用过高,导致服务器处理缓慢? 并发请求过多导致请求缓慢? ... 定位问题 查看服务器cpu和内存使用情况:发现服务器的cpu空闲率为95%左右,内存使用率在40%~60%.会不是内存使用过高导致的呢?我们重启了nodejs服务,此时我们观察到内存使用率有所减少在20%~40%左右,结果

记一次PermGen持续增长的解决过程

前言 这个问题的起因,是一次PermGen持续增长的报警,而问题的解决,是PermGen.类加载.Spring.JDK等知识的融合. 本次问题,从发生到最终解决,经历了很长的时间,这个过程中,有工程方法,有JVM优化,有源码追踪,有思想碰撞,最终解决问题后,发现是Spring 4.1.1.RELEASE的BUG,从4.2.4之后,这个BUG就修复了,这次问题的解决,对于我们从Low到Hight的过程,深有裨益. 问题的解决,是多位同事合作的结果,我再一次总结一遍,以求加深理解,并对读者有所裨益.

记UWP开发——多线程操作/并发操作中的坑

一切都要从新版风车动漫UWP的图片缓存功能说起. 起因便是风车动漫官网的番剧更新都很慢,所以图片更新也非常慢.在开发新版的过程中,我很简单就想到了图片多次重复下载导致的资源浪费问题. 所以我给app加了一个缓存机制: 创建一个用户控件CoverView,将首页GridView.ItemTemplate里的Image全部换成CoverView CoverView一旦接到ImageUrl的修改,就会自动向后台的PictureHelper申请指定Url的图片 PictureHelper会先判断本地是否

记学习前端构建工具gulp的过程,略心酸

初学前端的时候就听过友人说,前端不好学,很多软件都是要自己下载安装插件的,当时是很不以为然的,不就是下载几个软件外加安装插件吗?!怎么会很难呢!后面才发现自己真的错了. 今天刚好准备好好看看前端构建工具gulp的使用,于是乎就各种上网查资料.刚开始的时候有点摸不着头脑,这个东西不是一个软件,拿来就用,需要自己配置环境,自己根据需求安装package,完全是自己DIY的一个工具. 下面就把整个安装过程,记录下来,方便以后查看吧. 先明确几个概念:1.gulp是基于node.js环境下工作的:2.命

记一次服务器宕机处理过程

今天整理之前的运维资料,发现了自己整理的一次刀片服务器(运行的vmware虚拟化)事故处理流程,所有记录下,备忘. 一.事件处理过程 14:10 接到机房运维工程师通知,Opmanager监控系统上出现了多台服务器宕机现象,并且均为虚拟机. 14:12 通知机房运维工程师检查HP刀片服务器是否有告警,远程登录vcenter进行检查.远程查看发现ESX04(10.203.11.64)出现告警,告警信息如下图所示:  14:15 通知工程师ESX04出现告警,然后确认该刀片服务器是否存活,并进入机房

记一次linux服务器问题处理过程

本周二的时候,涛哥找我,说明了一件事,在安装ganglia的时候,发生的一个问题. 在一台suse 10 sp1的服务器上,安装ganglia的一个依赖包,libconfuse.rpm,安装完成之后, 执行任何命令都会出现段错误的提示,而且无法再次ssh登录,也无法直接console登录. ssh登录,提示握手的时候错误,console登录提示init失败,请等等五分钟. 根据所有这些提示找到的解决方案都不适用于我们的情况. 其实在这个时候,涛哥给我讲了一件事,说前两天也发生过类似的事情,说是库