解决-linux 一次 高并发处理过程。

一、关闭用不到的服务器资源:定时任务,减轻数据库的压力。

二、前端H5调用接口个数减少,减少请求连接次数。缓解服务器及数据库的压力。

经过前两步,且加了负载,依然存在访问特别慢。故再次经过如下调整最终稳定运行。记录一下。感谢同事们的坚持。

三、解决 oracle 数据库,java jdbc连接异常

oracle 数据库,java jdbc连接异常:Could not get JDBC Connection; nested exception is java.sql.SQLException: Io 异常: Connection reset

解决过程:

Connection reset显然是数据库连接断开,可能的原因:1、网络不稳定,断开时间过长,导致reset 2、数据库连接被其它线程关闭 3、数据库连接池配置的问题,导到程序获取到某个连接进行操作时,而实际上此连接已经失效导致出错。

数据库连接池中的连接被创建而长时间不使用的情况下,该连接会自动回收并失效,但客户端并不知道,在进行数据库操作时仍然使用的是无效的数据库连接,这样,就导致客户端程序报“ java.sql.SQLException: Io 异常: Connection reset” 或“java.sql.SQLException 关闭的连接”异常。

原因:和Java的安全随机数生成器的实现原理相关。java.security.SecureRandom is a standard API provided by sun. Among various methods offered by this class void nextBytes(byte[]) is one. This method is used for generating random bytes. Oracle 11g JDBC drivers use this API to generate random number during login. Users using Linux have been encountering SQLException(“Io exception: Connection reset”).

1)/dev/random是Linux内核提供的安全随机数生成设备;

2)/dev/random依赖系统中断信息来生成随机数,当设备数目比较少时,产生随机数的速度比较慢,如果应用对随机数的需求比较大时就会供不应求;

3)/dev/random在读取时会阻塞调用线程;

4)/dev/urandom是/dev/random的改良版本,解决了随机数生成慢、阻塞调用的问题,但同时稍微降低了安全性;

5)Linux环境下man random命令可以查阅到/dev/random和/dev/urandom的介绍,比较详尽;

/dev/random 是堵塞的,在读取随机数的时候,当熵池值为空的时候会堵塞影响性能,尤其是系统大并发的生成随机数的时候,如果在随机数要求不高的情况下,可以去读取/dev/urandom

1、启动jvm时,修改应用的JVM参数,方法有三种:

-Djava.security.egd=file:/dev/../dev/urandom

-Djava.security.egd=file:/dev/./urandom

-Djava.security.egd=file:/dev/urandom 

2、修改JRE的java.security文件变量securerandom.source

修改配置文件java.security 在$JAVA_HOME/jre/lib/security/java.security

 参数 securerandom.source=file:/dev/urandom

四、配置各负载linux服务器 高并发socket最大连接数

Linux操作系统,无论是编写客户端程序还是服务端程序,在高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开文件数量的限制(因为系统为每个TCP连接都要创建一个socket句柄,每个socket句柄同时也是一个文件句柄)。

1、修改用户进程可打开文件数限制,如图所示:

 

说明:

ulimit –n :查看当前系统允许当前用户进程打开的文件数限制。

默认为1024:表示当前用户的每个进程最多允许同时打开1024个文件。

这1024个文件中还得去除每个进程打开的标准输入、标准输出、标准错误、服务器监听socket等等,剩下的可用于客户端socket连接的文件数就只有

1024-10=1014个左右,也就是基于Linux的程序最多允许同时1014个TCP并发连接。

(1)修改Linux系统对用户打开软限制和硬限制,如图所示:

vim /etc/security/limits.conf

添加 root soft nofile 65535

        root hard nofile 65535

        root soft noproc 65535

        root hard noproc 65535

 

说明:root代表修改了root用户打开文件的数的限制,可以用“*”代表所有用户soft和hard指定要修改的软限制还是硬限制。65535 指定修改的新限制值,也就是最大打开的文件数(软限制一定要小于或等于硬限制)

(2) 添加完成后,source /etc/security/limits.conf 使配置生效。

五、Nginx 配置分流机制

(1)已知后台登录与同步新生缴费数据接口只有少部分人进行使用,而大量接口调用来自于H5.

所以 可以按照url路径不同进行分流。

(2)为确保公司人员快解决故障问题。按指定ip进行访问指定服务器。

(3)负载服务器按内存及cpu资源使用情况,分配分流压力的比例、失败连接次数、超时时间。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值