`
xiamizy
  • 浏览: 90072 次
  • 性别: Icon_minigender_1
  • 来自: 南京
博客专栏
78437efc-ad8e-387c-847f-a092d52e81a6
spring framew...
浏览量:4891
社区版块
存档分类
最新评论

记一次 java程序优化

阅读更多

优化原因

环境中部署两个程序:

  1. web应用 tomcat   10G(webservice服务端,前端web服务)
  2. java应用               5G(webservice客户端,socket客户端)

之前的设计思路是打算web应用作为前端不做业务处理,后端使用webservice做能力接入。

 

1天能力处理量大概在150W次到两百万次左右:

  • 并发数量web端口在12tps
  • 应用端在20tps左右(能力聚合的时候可能会调用几个能力做聚合操作)。

   

jvm优化

之前的应用服务的启动参数

 

 -Xss1024k -Xms1g -Xmx3g -Xmn2g -XX:PermSize=64m -XX:MaxPermSize=128m -Djava.awt.headless=true  -XX:+UseParallelGC
    优化后:
 -server -Xss1024k -Xms3g -Xmx3g -Xmn2g -XX:PermSize=128m -XX:MaxPermSize=128m -Djava.awt.headless=true  -XX:+UseParNewGC -XX:ParallelGCThreads=20  -XX:+UseConcMarkSweepGC -XX:CMSFullGCsBeforeCompaction=5 -XX:+UseCMSCompactAtFullCollection
  • 将jvm设置为server模式(如下默认值为server也可不设)
[linkage@zhczint1 ~]$ java -version
java version "1.6.0_33"
Java(TM) SE Runtime Environment (build 1.6.0_33-b04)
Java HotSpot(TM) 64-Bit Server VM (build 20.8-b03, mixed mode)
  •  将Xms与Xmx,XX:MaxPermSize与XX:PermSize设置为相同,防止在伸缩的时候性能降低
  •  将原有年轻态并行收集器,年老太串行收集器设置(默认)  修改为 年轻态并行收集器,年老态并发收集器。

修改完后,性能稳定了不少,同时对web服务器进行了jvm参数的相应优化



 

 linux参数优化

查看打开文件限制 (调优socket情况)
more /etc/security/limits.conf
#<domain>      <type>  <item>         <value>
#
*       soft    nofile  65535
*       hard    nofile  65535
#*               soft    core            0
#*               hard    rss             10000
#@student        hard    nproc           20
 查看网络连接情况
[linkage@zhczweb1 ~]$ netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' 
TIME_WAIT 132
FIN_WAIT2 23
ESTABLISHED 79
SYN_RECV 30
 设置连接情况
~
[linkage@zhczweb1 ~]$ vi /etc/sysctl.conf 

net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 30

[linkage@zhczweb1 ~]$  /etc/rc.d/init.d/network restart 
 
参考:
java server与client模式区别
  • 大小: 23 KB
分享到:
评论

相关推荐

    java程序优化的一些最佳实践

    总之,Java程序优化是一个综合性的过程,需要结合具体应用场景,从代码结构、数据结构、算法选择、资源管理等多个层面进行考虑。同时,优化不仅仅关注性能,也要兼顾代码质量和可维护性,这样才能打造出高效且易于...

    记录一次Java爆掉之后的日志

    标题“记录一次Java爆掉之后的日志”暗示了这是一个关于Java程序运行时出现严重问题的案例,可能是由于内存溢出、线程死锁或者系统资源耗尽等原因导致的程序崩溃。这种问题通常会生成一个名为“hs_err_pid[进程ID]....

    44条Java代码优化建议

    对于类和方法使用final修饰符,可以提高Java程序的性能。final类无法被继承,final方法无法被重写,这使得Java编译器有机会对final方法进行内联,这能够显著提升程序的运行效率。 2. 重用对象 尽量重用对象,特别是...

    java 记录程序执行的时间

    首先,我们可以使用`System.currentTimeMillis()`方法来获取当前时间(单位为毫秒)作为基准点,然后在程序执行完毕后再获取一次时间,通过两者之差即可计算出程序的运行时间。例如: ```java long startTime = ...

    基于JAVA开发的记录宝宝喂奶小程序

    Java是一种广泛使用的面向对象的编程语言,以其“一次编写,到处运行”的理念闻名。它的语法清晰,易于学习,并且拥有强大的类库支持,使得开发者能够快速构建功能丰富的应用。在本项目中,Java的这些优势得到了...

    java一次性查询处理几百万数据解决方法

    ### Java一次性查询处理几百万数据解决方法 在Java开发中,处理大数据量是常见的需求之一,特别是当数据规模达到几百万级别时,如何高效、稳定地处理这些数据变得尤为重要。本文将详细介绍一种Java一次性查询处理几...

    java实现的一个分页程序

    这尤其适用于数据库查询返回的结果集过大,一次性加载到内存中会消耗大量资源或者导致性能下降的情况。在这个"java实现的一个分页程序"中,我们可以探讨几个关键知识点: 1. **JDBC分页**:Java中的分页通常通过...

    Java的笔记,记录Java的基础知识

    它以其“一次编写,到处运行”的特性而闻名,因为Java代码可以跨平台执行,只需在不同的操作系统上安装Java虚拟机(JVM)。本笔记主要涵盖了Java的基础知识,对于初学者来说是极好的学习资源。 一、Java基础语法 1....

    中控智慧考勤机Java二次开发Demo

    【中控智慧考勤机Java二次开发Demo】是一款专为中控考勤设备设计的Java编程示例,旨在帮助开发者更高效地进行考勤系统的定制与集成。在中控科技的官方网站和售后服务中,通常提供的SDK和示例是基于C#的,但针对Java...

    使用JAVA内存数据库h2database性能优化

    【使用JAVA内存数据库h2database性能优化】 在开发应用程序时,我们经常遇到性能瓶颈,特别是当涉及到大量的IO操作时。数据库访问是这类问题的主要来源,特别是在处理高并发、实时计算和海量数据监控的情况下。例如...

    基于java开发的做题(刷题,驾车宝典)小程序

    比如,题目的加载可以采用分页策略,避免一次性加载大量数据导致性能下降。 8. **版本控制**:在开发过程中,版本控制工具如Git能够帮助团队协作,记录代码变更,便于回溯和合并代码。 9. **部署与发布**:完成...

    java-poi-excel-导出20万条记录【源代码】

    在JavaExcel的实践中,当一次性加载大量数据到内存时,确实容易引发`OutOfMemoryError`,这是因为Excel对象模型在内存中的表示占用空间较大。为了解决这个问题,我们需要采用流式处理或者分批处理的策略。在描述中...

    java性能优化策略.pdf

    Java性能优化是提升Java应用程序效率的关键,这包括优化代码编写和调整Java虚拟机(JVM)设置。在Java系统中,优化策略应从以下几个方面入手: 1. **避免不必要的对象创建和垃圾收集**:对象创建和垃圾收集是影响...

    实战Java虚拟机 JVM故障诊断与性能优化 葛一鸣

    JVM的主要任务是解析字节码,并将其转化为机器语言,使得Java程序能够在不同的操作系统上无缝运行,实现了“一次编写,到处运行”的目标。理解JVM的工作原理,包括内存模型、类加载机制、垃圾回收(GC)等,对于优化...

    java细节优化代码1.0版本.zip

    在Java编程领域,优化代码是提高程序性能的关键步骤。"java细节优化代码1.0版本.zip"这个压缩包中包含了关于Java代码优化的一些具体...通过深入学习和实践这些优化技巧,可以显著提升Java程序的运行效率和用户体验。

    java和mysql的分页程序

    在Java和MySQL的世界里,分页是Web应用程序中不可或缺的一部分,尤其在处理大量数据时,分页能够提高用户体验,避免一次性加载过多数据导致页面响应慢或者内存溢出。本项目提供了一个基于Java后端和MySQL数据库的...

    java后端大华摄像头二次开发demo

    "java后端大华摄像头二次开发demo"是一个项目,旨在演示如何利用Java后端技术对接大华摄像头进行二次开发,以实现更高级的功能或者定制化需求。在这个过程中,开发者通常会用到大华提供的SDK(Software Development ...

    Java实现智能优化算法_TSP问题_模拟退火_禁忌搜索_遗传算法_神经网络

    旅行商问题是一个经典的NP完全问题,它要求寻找最短的可能路径,使得一个旅行商可以访问一系列城市一次并返回起点。在这个项目中,Java被用来实现三种不同的智能优化算法来解决TSP问题:模拟退火、禁忌搜索和遗传...

    Java实现获得MySQL数据库中所有表的记录总数可行方法

    例如,如果数据库中表的数量非常多,一次性加载所有表名可能会消耗大量内存。此时,可以考虑分批处理或者使用游标(Cursor)来逐步获取表名。另外,为了提高查询效率,可以考虑创建数据库索引,特别是针对那些频繁...

Global site tag (gtag.js) - Google Analytics