was连接池怎么看
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了was连接池怎么看相关的知识,希望对你有一定的参考价值。
WAS连接池可以在控制台上看到,一般是在应用服务器节点上,我们可以查看连接池的大小、当前使用的连接数量等细节。 参考技术A 你可以通过查看WebSphere连接池的监控页面来查看具体信息。这个页面会显示连接池中连接数、最大连接数、最小连接数以及空闲连接数。 参考技术B 连接池是一种技术,用于管理多个连接,以便更有效地处理客户端请求。连接池可以帮助减少延迟,提高性能,并减少资源消耗。连接池的工作原理是,它会在初始化时创建一组连接,然后将这些连接存储在一个池中,以便客户端可以从池中获取连接,而不必每次都重新创建连接。连接池还可以检测连接的状态,并在发现连接失效时重新创建新的连接。连接池的优点在于,它可以提高性能,减少延迟,并减少资源消耗。 参考技术C 连接池是一种计算机技术,它可以帮助管理和维护多个客户端之间的连接。连接池可以减少建立新连接的时间,提高应用程序的性能。连接池可以将多个客户端的连接统一管理,并且可以重复使用连接,从而减少系统资源的消耗。连接池可以帮助提高应用程序的性能,提高系统的可用性,并有助于提高系统的安全性。 参考技术D WAS连接池是WebSphere应用服务器中的一项重要功能,它用于存储已经建立的客户端到服务器的连接,减少客户端与服务器之间的连接建立时间,提高应用程序性能,但是也有可能造成连接泄漏。jedis连接池爆满导致的服务不可用
生产环境was线程数300,jedis连接池连接数100.
在业务高峰期,查看日志发现大量could not get a resource from a pool的异常,抓取javacore文件发现was线程大量进入parked状态,查看jedis源码发现连接池底层使用common-pool实现,而common-pool其中有这样一段代码:
if (p == null) {
if (borrowMaxWaitMillis < 0) {
p = idleObjects.takeFirst();
} else {
p = idleObjects.pollFirst(borrowMaxWaitMillis,
TimeUnit.MILLISECONDS);
}
}
新来的线程会从jedis自己实现的LinkedBlockingQueue中拿链接,如果连接池没有空闲链接并且已键连接数已达上限,那么
public E pollFirst(long timeout, TimeUnit unit)
throws InterruptedException {
long nanos = unit.toNanos(timeout);
lock.lockInterruptibly();
try {
E x;
while ( (x = unlinkFirst()) == null) {
if (nanos <= 0) {
return null;
}
nanos = notEmpty.awaitNanos(nanos);
}
return x;
} finally {
lock.unlock();
}
}
当前线程也就是was线程就会parked等待notEmpty信号,导致大量请求进不来堵死,首先我们考虑参数配置不合理,业务高峰期热点数据在redis中,大量的redis访问,我们改成300was链接,200redis链接,情况明显好转,但是在高峰期仍有部分请求时间超长,was线程parked的现象出现,更改jedis连接池参数,把maxWaitMillis参数调小,从最初的2000毫秒调到500,在业务高峰期,服务器资源紧张,新来的请求如果获取不到资源,立即报错返回,保证现有业务的正常运行算是一种权衡的办法。
以上是关于was连接池怎么看的主要内容,如果未能解决你的问题,请参考以下文章