如何处理java高并发 Linux+nginx并发连接数超10万

热度:94℃ 时间:2019-10-25 来源:佚名


什么是并发连接数

并发连接数,是在同一秒内打开网站的请求次数。并发连接数越大,能够处理的性能越强,也代表会消耗更多的CPU和内存。当CPU或内存达到使用率的90%以上,在并发连接持续增加的情况下,网站就会出现500或502内部服务器错误。常见于win+iis系统中。

Win系统 500内部服务器错误。在并发连接数较多的情况下,会运行多个应用程序池,应用池打开运行进程过多,就会导致应用池假死,从而到时站点出现500,502内部服务器错误。所以当win系统 iis下运行的asp,aspx php或java站点出现高并发的情况只有换Linux系统才能解决。

并发连接数和服务器的带宽,性能没有绝对的关系。并不是带宽大性能强。可以处理的并发连接数一定就强。所以新手不要被误导,不要盲目加带宽升级服务器。



如何解决php高并发?

不管是php还是java只做的程序都不适合在iis下运行,asp和aspx.net程序 在相同访问ip的情况下比linux 系统需要浪费更多的服务器,还会频繁出现宕机,服务器的成本会远远超过网站改版的成本,京东商城曾从aspx语言程序 改成linux+java。所以要解决高并发,第一步要更换服务器系统和程序语言。通常一台linux系统主机是win iis 系统的5~10倍处理性能。


Linxu系统服务器

服务器的选择上,推荐使用阿里云的ECS服务器,带宽选择按量付费,推荐选择100M共享带宽,系统选择安装linux系统。不会操作linux的也不要担心。请访问 《如何搭建linux系统环境》

对于没有用过的新手,可以通过oneinstack 选择需要配置的环境。Php推荐选择 LNMP(linux+nginx+mysql+php)并发连接较大的可以了解下Tengine通过ssh控制面板或者阿里云的控制面板安装配置环境,复制安装命令,大约10分钟环境即可搭建完成。


nginx参数

Linux系统搭配nginx,修改nginx 配置文件,通过命令编辑nginx.conf 配置参数,即可实现处理高并发。

Linux环境下,怎么确定Nginx是以那个config文件启动的?

输入命令行: ps  -ef | grep nginx

master process 后面的就是 nginx的目录。

php-fpm 最大进程数,可运行进程数量越多,可同时处理请求的连接数就越多。小编测试过每日400万pv的站点,峰值每秒5000个并发连接。经过以下设置完美解决高并发的问题

pm=static

pm.max_children=100

这个指令 是 在同一时间最大动态进程数量 。小编的设置为800,即最高有800个动态进行处理并发请求。超过800以上出现过宕机,不知道是cpu问题还是内存问题导致的宕机。

 worker_rlimit_nofile 65535;

这个指令是一个nginx 进行打开的最多文件,65535是默认最高值。一般不需要调整。

request_terminate_timeout

“request_terminate_timeout”默认值是”0” 0s的含义是让PHP-CGI一直执行下去而没有时间限制。服务器性能越好,带宽越大。可以设置的越高,这个需要根据综合的流量进行测试设置。

带宽和配置是否影响并发连接数?

影响并发连接数的主要因素不是带宽和配置,不要盲目的增配和增宽。浪费钱不说,还解决不了问题。小编曾在iis下运行php程序,峰值过1000就出现应用池假死而宕机。升级服务器和带宽仍没能解决问题。所以开始更换linux系统。

带宽的选择,建议使用按量付费共享带宽,按天按量付费。享100M带宽会随着流量的多少调节带宽出口网速。最小1m带宽,最大100m带宽。可以处理的速度就越快。