如何解决线程太多导致java socket连接池出现的问题

这篇文章主要介绍了如何解决线程太多导致socket连接池出现的问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

线程太多导致socket连接池爆满,进程启动不了

问题:

某部机上跟其它机器的连接有问题,ping可以通,telnet端口不通,可以其它机器可以连接到该机器上的进程。

java应用启动不起来,产生以下错误。

java.net.SocketException: No buffer space available (maximum connections reached?): listen failed
  at java.net.PlainSocketImpl.socketListen(Native Method)
  at java.net.PlainSocketImpl.listen(Unknown Source)
  at java.net.ServerSocket.bind(Unknown Source)
  at java.net.ServerSocket.<init>(Unknown Source)
  at java.net.ServerSocket.<init>(Unknown Source)

查找问题:

打开任务管理器,发现某个进程产生了上千的大量的线程。

解决方法:

杀死该进程后,java应用可以成功启动。

icmp协议是IP层的附属协议,不会用TCP连接,所以正常。而telnet则是HTTP请求报文,会使用TCP连接。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Java Web项目中使用Socket通信多线程、长连接的方法

    很多时候在javaweb项目中我们需要用到Socket通信来实现功能,在web中使用Socket我们需要建立一个监听程序,在程序启动时,启动socket监听.我们的应用场景是在java项目中,需要外接如一个硬件设备,通过tcp通信,获取设备传上来的数据,并对数据做回应. 先看一下web的监听代码: import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; public class

  • Java Socket编程实例(三)- TCP服务端线程池

    一.服务端回传服务类: import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.Socket; import java.util.logging.Level; import java.util.logging.Logger; public class EchoProtocol implements Runnable { private static f

  • python单线程下实现多个socket并发过程详解

    先看服务端的代码 import sys # import socket import time import gevent from gevent import socket from gevent import monkey monkey.patch_all() #类似于python中的黑魔法,把很多模块的阻塞的变成非阻塞的,比如socket中的rece和send都变 # 为不阻塞了 def server(port): s = socket.socket() s.bind(("127.0.0.

  • java使用socket实现一个多线程web服务器的方法

    除了服务器类,还包括请求类和响应类 请求类:获取客户的HTTP请求,分析客户所需要的文件 响应类:获得用户请求后将用户需要的文件读出,添加上HTTP应答头.发送给客户端. 服务器处理类 package com.lp.app.webserver; import java.io.*; import java.net.*; //使用Socket创建一个WEB服务器,本程序是多线程系统以提高反应速度. class WebServer { public static String WEBROOT = "&

  • python多线程socket编程之多客户端接入

    Python中实现socket通信的服务端比较复杂,而客户端非常简单,所以客户端基本上都是用sockct模块实现,而服务 端用有很多模块可以使用,如下: 1.客户端 #!/usr/bin/env python #coding:utf-8 ''' file:client.py date:9/9/17 3:43 PM author:lockey email:lockey@123.com desc:socket编程客户端,python3.6.2 ''' import socket,sys HOST =

  • Java编程利用socket多线程访问服务器文件代码示例

    这篇文章将向大家展示Java编程利用socket多线程访问服务器文件代码示例,如果您想先了解Java多线程socket编程的基础知识,可以看下这篇文章:Java多线程编程实现socket通信示例代码. 接下来进入正文,我们看看利用socket多线程访问服务器代码: ServerMain.java package com.ysk.webServer; import java.io.File; import java.io.IOException; import java.net.ServerSoc

  • 如何实现socket网络编程的多线程

    TCP 是可靠的连接.这个可靠的意思就是得有明确的连接对象才行,就像是打电话,拨打的号码必须得在服务中有人接,这个网络会话才算是建立了. UDP: 不可靠的连接.不可靠的意思就是不太确定这个会话最后是不是真的送达你要连接的对象那里去了,就像是寄快递,把快递地址填上了,但是说不好半路会出点啥幺蛾子,能不能安全送达不一定. IP地址: 就是计算机的身份证.身份证号前六位数字是地址码(可以知道是哪个省哪个城市哪个县城),接着八位数字是出生日期码,IP地址也是这样的,它是由网络地址(确定是哪个网络)和主

  • c语言socket多线程编程限制客户端连接数

    先上一些多线程需要使用的函数定义: 复制代码 代码如下: DWORD WINAPI ProcessClientRequests(LPVOID lpParam)  //新线程将会执行的函数定义{      return 0;} HANDLE handler=CreateThread(NULL, 0, ProcessClientRequests, &clientsocket, 0, NULL);   //这里比较简单,&clientsocket是个指针,是从主线程传入新线程的参数 WaitFo

  • 如何解决线程太多导致java socket连接池出现的问题

    这篇文章主要介绍了如何解决线程太多导致socket连接池出现的问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 线程太多导致socket连接池爆满,进程启动不了 问题: 某部机上跟其它机器的连接有问题,ping可以通,telnet端口不通,可以其它机器可以连接到该机器上的进程. java应用启动不起来,产生以下错误. java.net.SocketException: No buffer space available (maximum co

  • 关于HttpClient 引发的线程太多导致FullGc的问题

    CloseableHttpClient httpClient = HttpClients.custom() .setConnectionManager(connectionManager) .setMaxConnTotal(400) .setMaxConnPerRoute(150) .evictExpiredConnections() .build(); evictExpiredConnections 这个配置作用: 设置一个定时线程,定时清理闲置连接,可以将这个定时时间设置为 keep ali

  • Java httpClient连接池支持多线程高并发的实现

    当采用HttpClient httpClient = HttpClients.createDefault() 实例化的时候.会导致Address already in use的异常. 信息: I/O exception (java.net.BindException) caught when processing request to {}->http://**.**.**.** Address already in use: connect 十一月 22, 2018 5:02:13 下午 or

  • Java Druid连接池与Apache的DBUtils使用教程

    目录 Druid连接池 连接池思想 Druid连接池使用步骤 引入相关jar包 创建database.properties配置文件 编写连接池工具类 Druid连接池测试 Apache的DBUtils使用 Apache DBUtils介绍 Apache DBUtils特征 Apache DbUtils主要组成 Apache DbUtils使用步骤 综合案例 创建product表 向表中添加数据 创建实体类Product 创建ProductDao接口 创建ProductDaoImpl实现类 创建P

  • Java FTPClient连接池的实现

    最近在写一个FTP上传工具,用到了Apache的FTPClient,为了提高上传效率,我采用了多线程的方式,但是每个线程频繁的创建和销毁FTPClient对象势必会造成不必要的开销,因此,此处最好使用一个FTPClient连接池.仔细翻了一下Apache的api,发现它并没有一个FTPClientPool的实现,所以,不得不自己写一个FTPClientPool.下面就大体介绍一下开发连接池的整个过程,供大家参考. 关于对象池 有些对象的创建开销是比较大的,比如数据库连接等.为了减少频繁创建.销毁

  • Java dbcp连接池基本使用方法详解

    1.依赖api的使用 导入jar包 <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-dbcp2 --> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-dbcp2</artifactId> <version>2.7.0</version&g

  • Java中Druid连接池连接超时获取不到连接的解决

    错误内容: com.alibaba.druid.pool.GetConnectionTimeoutException: wait millis 30000, active 600, maxActive 600, creating 0 detail: Service Error:Cannot find a proper coonection from STDB 错误日志截图: 解决过程: 1.添加了三个参数 作用是如果超过3分钟,连接未释放,那么关闭连接,并报错. 2.进行请求,并查看日志 确认获

  • Java实现数据连接池Druid举例

    目录 开篇 Druid的调试 参考 开篇 Druid号称是Java语言中最好的数据库连接池,并且能够提供强大的监控和扩展功能.作为日常使用较多的数据库连接组件,纯粹个人兴趣研究下理解下的实现原理. 理解一个工具组件最好的方式就是进行 debug,这里建议大家下载下参考连接中的 druid demo,修改下具体的数据库连接参数就可以直接进行调试跟踪. 之所以强调 Demo 的重要性,在于通过 demo 能够跟踪所有的执行流程,有了 Demo 剩下的事情只要花时间都能很好的梳理. Druid的调试

  • 关于Java 项目封装sqlite连接池操作持久化数据的方法

    Sqlite sqlite是C实现的一个开源SQL引擎,其api提供sql语法支持,通过sql解析后对存储层的磁盘文件进行操作,完整配置的sqlite库小于400kb,多用于移动端应用,小型项目中. 对Sqlite有兴趣的可以了解下其体系结构 之前自研SQL解析器的时候便是借鉴了SQLcompiler的源码,这里不展开介绍 封装Java的Sqlite连接池 首先maven项目引入依赖sqlite-jdbc,其主要是java版的sqliteapi,关于Sqlite api的操作,大家可以看菜鸟教程

  • Laravel 5.4因特殊字段太长导致migrations报错的解决

    前言 本文主要介绍了关于Laravel 5.4因特殊字段太长导致migrations报错的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍: laravel 5.4 改变了默认的数据库字符集,现在utf8mb4包括存储emojis支持.MySQL 需要v5.7.7或者更高版本,当你试着在一些MariaDB或者一些老版本的的MySQL上运行 migrations 命令时,你会碰到下面这个错误: [Illuminate\Database\QueryException] SQLS

随机推荐