文档章节

多线并发优化(tomcat)

pxk
 pxk
发布于 2017/09/12 13:51
字数 696
阅读 58
收藏 1

先说下问题是怎么来的吧。

项目背景:现在正在做的是一个爬虫项目,爬虫主要爬取各大电商的商品数据,然后清洗进入索引库,为客户提供搜索导购服务(说白了就是导购服务)。爬取这些数据的要求:实时性、准确性。重点是实时性,需要爬虫保证每天至少爬取一遍这些数据,对商品库进行更新。那么问题就来了,爬虫肯定是多线程的,而且要求执行效率要特别高,就是要快。从第一个版本的纯手工方式,到第二个版本的多线程调度和任务分配(主要是方便监控)。

问题表现:项目在本机跑起来100个线程毫无压力,而且cpu利用率也特别好。所以就直接部署到了测试环境的服务器上,跑了一个晚上第二天早上依赖发现内存溢出了,而且这个溢出以前没怎么见过,一般大家场景的内存溢出都是Java heap space或PermGen space ,而我这次遇到的是GC overhead limit exceeded,相信大家也很少遇到。(如果大家遇到前面两种请参考java内存溢出的三种情况和解决方案

解决思路:

    1、首先肯定是百度咯,百度不行翻出去google咯,找一些资料看了下,官方也有说明。问题根本原因是jvm gc行为中超过98%以上的时间去释放小于2%的堆空间时会报这个错误。

    2、为什么本机可以,到了测试服务器上不行了,然后一看服务器内存居然4G,运维的兄弟太坑了,给分那么点,我笔记本都是8g呢。后来先要求加内存到8G,但是还是没解决根本问题。

    3、查看了下内存使用情况,还是溢出了,导致新的线程无法创建,测试服务器使用线程池开了300个线程,不至于啊。所以只有修改tomcat的默认配置了,其实就加了2个参数,(linux就修改catalina.sh,windows当然是修改catalina.bat,加在文件的开头)

HEAP_SIZE="6000M"
NEW_SIZE="4200M"

      另外还多加了两个参数 ,提供jconsole连接的,方便监控jvm,如果再出问题就得靠这玩意儿了。

SERVER_IP="192.168.16.12"
SERVER_PORT="1909"

            下图是连接jconsole后监控的界面,大家会发现GC频率并不高,但是很高效

© 著作权归作者所有

共有 人打赏支持
pxk

pxk

粉丝 87
博文 26
码字总数 26616
作品 0
成都
程序员
私信 提问
加载中

评论(1)

zjg23
zjg23
GC overhead limit exceeded,超过98%的时间用来做GC并且回收了不到2%的堆内存
闲谈Tomcat性能优化

Tomcat在各位JavaWeb从业者常常就是默认的开发环境,但是Tomcat的默认配置作为生产环境,尤其是内存和线程的配置,默认都很低,容易成为性能瓶颈. 幸好Tomcat还有很多的提升空间.下文介绍一下...

ParkJun
2016/02/23
2.3K
13
Tomcat性能优化

最近一直在解决线上一个问题,表现是: Tomcat每到凌晨会有一个高峰,峰值的并发达到了3000以上,最后的结果是Tomcat线程池满了,日志看很多请求超过了1s。 服务器性能很好,Tomcat版本是7.0...

voole
2016/08/06
216
0
聊下并发和Tomcat线程数

最近一直在解决线上一个问题,表现是:Tomcat每到凌晨会有一个高峰,峰值的并发达到了3000以上,最后的结果是Tomcat线程池满了,日志看很多请求超过了1s。服务器性能很好,Tomcat版本是7.0.5...

jEpac
2016/07/26
21
0
Tomcat 7优化前及优化后的性能对比

一、运行环境 CPU: Intel(R) Pentium(R) P6200@2.13GHz ; 内存:4G,装的是32位win7,只认出3G,没有花时间去整ramdisk之类的东西; 操作系统:win7 32位; JDK:1.7.055 Tomcat:7.0.53 ...

宏薯
2014/06/04
0
110
Nginx Tomcat 配置及优化

目的:nginx处理用户请求的静态页面,tomcat处理用户请求jsp页面,来实现动态分离,nginx处理静态页面效率远高于tomcat,这样一来就能更好的提高并发,处理性能。 准备软件: 下载jdk1.7:h...

写PHP的JAVA猿
2016/10/26
55
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周日乱弹 —— 懒床是对冬天最起码的尊重

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @瘟神灬念 :分享daniwellP/桃音モモ的单曲《Nyan Cat》 《Nyan Cat》- daniwellP/桃音モモ 手机党少年们想听歌,请使劲儿戳(这里) @巴拉迪...

小小编辑
48分钟前
9
2
码云项目100,水一发

简单回顾一下: 早期构想最多的,是希望能将PHP一些类和编码分区做得更细,所以很多尝试。但不得不说,PHP的功能过于单一,是的,也许写C/C++扩展,可以解决问题,那我为什么不用C#或者Golan...

曾建凯
今天
3
0
Spring应用学习——AOP

1. AOP 1. AOP:即面向切面编程,采用横向抽取机制,取代了传统的继承体系的重复代码问题,如下图所示,性能监控、日志记录等代码围绕业务逻辑代码,而这部分代码是一个高度重复的代码,也就...

江左煤郎
今天
4
0
eclipse的版本

Eclipse各版本代号一览表 Eclipse的设计思想是:一切皆插件。Eclipse核心很小,其它所有功能都以插件的形式附加于Eclipse核心之上。 Eclipse基本内核包括:图形API(SWT/Jface),Java开发环...

mdoo
今天
3
0
SpringBoot源码:启动过程分析(一)

本文主要分析 SpringBoot 的启动过程。 SpringBoot的版本为:2.1.0 release,最新版本。 一.时序图 还是老套路,先把分析过程的时序图摆出来:时序图-SpringBoot2.10启动分析 二.源码分析 首...

Jacktanger
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部