有多少 java 码农平时需要用到 jvm 调优和数据库调优?

2016-12-25 23:04:59 +08:00
 esolve

会不会工作一两年了 还没用到过 jvm 调优 而是由 DevOpt 或者部署工程师去做?

6744 次点击
所在节点    Java
34 条回复
Miy4mori
2016-12-25 23:42:11 +08:00
性能不够时应用做负载均衡,数据做主从,然后项目就死了,不会再优化了………
sagaxu
2016-12-25 23:48:16 +08:00
也就调个内存大小和 gc 参数,其它都默认
xiamx
2016-12-26 00:01:42 +08:00
Devops
slixurd
2016-12-26 00:02:41 +08:00
至少会调个堆大小吧....
wmhx
2016-12-26 00:06:55 +08:00
国内需要天天优化 jvm 的就那么几个公司,
大把小公司活都干不完, 那里有空玩什么 jvm ,
现在硬件这么便宜, 多加点内存,跑几个 jvm 不比往死里优化 jvm 来的快么?
yuhuan66666
2016-12-26 00:42:03 +08:00
Java 面试总被问到的问题。。。。
但是实际从来基本没动过,顶多改改堆大小啥的
q397064399
2016-12-26 09:02:27 +08:00
过早优化是万恶之源,能跑得动,或者加硬件能解决的 ,尽量不要用人力去解决,

现在硬件老便宜了,实在不行就上云服务器,再不行,就做负载均衡, nginx 反代,多个 tomcat
共享 session 池,然后数据库 做读写分离,最后还不行的话,
这项目也就差不多死透了,要么交个大公司做,要么就扩大团队,招一堆 架构师来 :D
q397064399
2016-12-26 09:09:49 +08:00
首先优化这事情,肯定不是运维部署这些人能干的,否则还要程序员干嘛?

你给它写个 O ( N3 )的算法在哪里跑,顺带还把数据库的连接池给耗空了,业务量一上来,
运维再怎么优化 也只能干瞪眼啊

例如把 select xxx from tablexx where x in (xxxx)这样的业务逻辑
用 Java 代码写出来,把整张表读出来,然后给它 朴素排序一遍,再根据用户提交查找并集,
顺带给整张表做事务最高级别处理,整表加锁
q397064399
2016-12-26 09:22:35 +08:00
我也读过一部分深入理解 JVM 虚拟机,不过 JVM 的实现,我们肯定是很难搞懂的,
但是大概了解下 GC ROOTS 方式之类还是可以的。

从实际出发,真正对 GC 延迟要求极高的系统,实际上并不适合 Java 来做, stop the world
(一般都是 C++,手动管理内存,这样的系统实时性才高,例如 股票金融系统的实时性 )
无论你再怎么调优, JVM 的 GC 算法是虚拟机厂商的黑盒,它是不会让你碰的,
而绝大部分做 Java 需要调优的场景相当少,
极高性能需求的 肯定是 C/C++, 这些语言的开发者在有必要的时候,连内存管理器都是自己定制的
(例如 redis ,它的底层实现是 hashmap ,很多数据结构都是通过自定义内存管理器实现的)
( Java 门槛一看就低多了,根本没办法定制内存管理器)
对实时性有一定的要求,也有 Java 市场,但是不多,绝大部分开发领域的 Java 开发者接触不到而已,
q397064399
2016-12-26 09:28:15 +08:00
主流虚拟机根据书上的介绍描述是,
没有任何一个 JVM 的 GC 实现 可以避免 stop the world
Infernalzero
2016-12-26 09:36:15 +08:00
数据库调优肯定得懂的啊,这你也让运维搞?
ljcarsenal
2016-12-26 09:38:47 +08:00
jvm 不是吊打一票动态语言的 vm
Infernalzero
2016-12-26 09:41:06 +08:00
@q397064399 哥....整张表读出来,这表一大,分分钟给你搞跪啊,人查询都限制返回行数的,普通 IN 查询根本没有问题,只要不是条件参数太多
zacard
2016-12-26 09:53:07 +08:00
数据库调优不可避免吧,索引合理性, sql 合理性等等。 jvm 调整的比较少,但是也有。
q397064399
2016-12-26 09:58:23 +08:00
@Infernalzero 我只是假设而已,全读出来 肯定跪了,这种情况 查询并集的情况 肯定是要用 sql 来完成的
sql 存储引擎后面的算法 比我的 O ( N2 )肯定强啊
janxin
2016-12-26 10:05:19 +08:00
一般情况下你用个脚本语言性能都可以,性能不够时应用做负载均衡,数据做主从,然后就行了。 XD
xiuc001
2016-12-26 10:09:14 +08:00
大多数是等不到调优项目就挂了
XhstormR
2016-12-26 10:40:29 +08:00
也是哦。
0915240
2016-12-26 12:44:07 +08:00
@q397064399 这个是 过早优化是万恶之源
ihuotui
2016-12-26 12:56:36 +08:00
有, jvm 调优, sql 调优(比较少,在设计时候已经充分考虑好业务了),还有查看线程运行情况。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/330096

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX