最近发现一个问题,在服务器上通过netstat命令发现有大量的Close_Wait长时间存在,甚至有时候数量接近1000: 查看服务器参数(etc/sysctl.conf): net.ipv4.tcp_keepalive_time 网管已经修改成1200. 参数值还可以改小,但似乎是治标不治本,出现这种问题,肯定是某个地方的程序本身存在问题. 根据ip及端口信息,不难发现是什么地方除问题了,项目中有涉及到图片上传,于是找到图片上传的代码,结果发现代码非常简单,一行上传权限初始化代码,一行CDN官…
httpclient这个工具类对于大家来说应该都不陌生吧,最近在使用过程中出现了碰到一个棘手的问题,当请求的接口地址由http变成https之后,程序执行到 httpClient.execute(httpPost);的时候经常会卡死(程序无响应),这个问题的根本原因是第三方接口一直没有返回数据 程序需要收到反馈才能进行下一步操作,这也直接导致程序一直处于卡死状态. 百度了很多资料,基本都是说设置下超时时间就可以 但是问题还是没有得到解决,,,,, 最后本人想到一个解决办法,将调度方法单独放在线程…
import pymysqlfrom redis import Redisimport time h, pt, u, p, db = '192.168.2.210', 3306, 'root', 'nfwt&2016', 'xl_product_DONOT_REMOVE' h, pt, u, p, db = '192.168.2.130', 3306, 'root', 'root', 'xl_product_DONOT_REMOVE' def mysql_fetch(sql, res_type=…
代码中注入一个bean即可: /** * 解决Jackson导致Long型数据精度丢失问题 * * @return */ @Bean("jackson2ObjectMapperBuilderCustomizer") public Jackson2ObjectMapperBuilderCustomizer jackson2ObjectMapperBuilderCustomizer() { Jackson2ObjectMapperBuilderCustomizer customizer =…
问题描述: 生产环境突然之间出现了大量的Connection rest by peer.后来使用netstat -an | grep 服务端口号发现有大量来自A10服务器的ESTABLISHED连接,多的时候单台达到1万多,总连接数达到3万多.后来查看A10服务器发现,连接数来自同一个客户,于是猜测可能是该用户在请求时,每一次都会建立一个新的连接,并且该连接没有释放. 于是联系该用户,查看他们的建立请求连接的代码: 发现客户使用了apache的httpClient的method.releaseC…
线上图片下载服务器平时运行正常,最近突然出现一种比较奇怪的现象,只接受请求,但却没有处理请求,最开始怀疑下载线程挂掉了,dump 项目线程后发现异常: "pool-2-thread-1" prio=10 tid=0x00007f7fbc7c5000 nid=0x4e9 runnable [0x00007f800a05e000]   java.lang.Thread.State: RUNNABLE at java.net.SocketInputStream.socketRead0(Nat…
今天又遇到了11gR2连接数满的问题,以前也遇到过,因为应用那边没有深入检查,没有找到具体原因,暂且认为是这个版本Oracle的BUG吧. 上次的处理办法是用Shell脚本定时在系统中kill  v$session.status='INACTIVE'的连接,但是这次现场没有在操作系统中部署脚本的权限,只好在数据库中做处理,幸好我们对这个 数据库有完全的权限.这次使用了profile+JOB定时alter system kill 'sid,seral#' immediate的方式.具体脚本如下:…
用 CentOS 做 API 接口服务器供其他终端调用时,并发量高会报错:java.io.IOException: Too many open files. 其原因是在 Linux 下默认的Socket最大连接数为 1024(可以通过 ulimit -n 查看). 于是开始修改Linux的配置文件来增加连接数: 1.在/etc/rc.local 后增加一行 ulimit -SHn 2.在/etc/profile 后增加一行 ulimit -SHn 3.在/etc/security/limits.…
最近做httpclient做转发服务,发现服务器上总是有很多close_wait状态的连接,而且这些连接都不会关闭,最后导致服务器没法建立新的网络连接,从而停止响应. 后来在网上搜索了一下,发现解决的方法也很简单,如果想重用连接,那就使用连接管理器,从连接管理器里获取连接,然后定时的用连接管理器来释放空闲连接.httpclient自带了SimpleHttpConnectionManager,提供了Java代码 closeIdleConnections(long idleTimeout) clos…
前言 if...else 是所有高级编程语言都有的必备功能.但现实中的代码往往存在着过多的 if...else.虽然 if...else 是必须的,但滥用 if...else 会对代码的可读性.可维护性造成很大伤害,进而危害到整个软件系统.现在软件开发领域出现了很多新技术.新概念,但 if...else 这种基本的程序形式并没有发生太大变化.使用好 if...else 不仅对于现在,而且对于将来,都是十分有意义的.今天我们就来看看如何“干掉”代码中的 if...else,还代码以清爽. 问题一:…