楼主小土豆上跑两个 Java Netty 服务 + 邮件服务,RAM 快受不了了...... 有什么方式降低 Netty 内存占用吗?
如上图,一大串全是一个程式。求教一下 V2er,因为都知道 V2er 是万能的( xd
多谢各位 V2er,目前做法是 -Xms64m
压缩一下内存使用。外加了一块 2G 的 Swap 以便备用。
1
orangeade 2019-01-04 13:45:13 +08:00 via Android
dir + mipush ?
Java 就是以吃内存出名吧,要不换其他编程语言重写,对比看看? |
2
Mohanson 2019-01-04 13:47:27 +08:00 via Android 8
别问,问就 go
|
3
chendy 2019-01-04 13:52:38 +08:00
加参数限制内存使用
|
4
lihongjie0209 2019-01-04 13:53:47 +08:00
jvm 调优了解一下
|
5
jason19659 2019-01-04 13:55:38 +08:00
增加虚拟内存
|
9
Trumeet OP @lihongjie0209 吼高深哇...
|
10
dk7952638 2019-01-04 14:05:13 +08:00
十倍的性能换十倍的开发效率,java 从一开始就是在性能和开发效率之间寻找一个平衡点
|
11
lihongjie0209 2019-01-04 14:08:21 +08:00
@Trumeet 就是前面说的调整 jvm 参数, 复制粘贴就好了
|
12
Tengdw 2019-01-04 14:28:46 +08:00
根据 gc 曲线调整下堆内存大小看行不
|
13
victorywangzhcn 2019-01-04 14:43:13 +08:00
看看 GraalVM ,现在能直接 native 化,非常小。传送门 https://github.com/cstancu/netty-native-demo
|
14
sagaxu 2019-01-04 14:47:14 +08:00 via Android 1
Netty 会用堆外内存,所以实际占用比 Xmx 设置的高。建议开 gclog,然后尝试不同的 Xmx,观察 gc 时间间隔,选择能接受的最低间隔。
|
15
chanin 2019-01-04 14:54:23 +08:00
又想简单方便,又想快速高效是不可能的,身为编程语言鄙视链条最低端的 java,需要接 RAM 受审判之眼
|
16
Greendays 2019-01-04 15:14:24 +08:00
别问,问就加 RAM😂
|
17
hand515 2019-01-04 15:24:21 +08:00
Java 内存这块再省也省不了多少
|
18
luosuosile 2019-01-04 15:41:20 +08:00
java 是编程语言 鄙视链最低端吗??我以为 java 至少在鄙视链中游呢
|
19
XIVN1987 2019-01-04 15:46:13 +08:00
是不是 JIT 的编程语言都比较费内存啊??
|
20
sagaxu 2019-01-04 15:51:20 +08:00 via Android
@XIVN1987 JIT 会额外吃掉一些,gc 也会吃掉一些,spring 那套东西再吃个几十 MB。JAVA 程序,最低 100M 起步。
|
21
auxox 2019-01-04 15:59:38 +08:00
没有设置 jvm 参数,那还不是有多少内存用多少内存
|
22
passerbytiny 2019-01-04 16:04:13 +08:00
请设置 JVM 参数(-Xmx),JVM 申请的是进程独占内存,如果不设置,默认情况下,按照最小 25%物理内存,最大 50%物理内存去申请,4 个 java 进程就 GG,不管你加多少内存条。
|
23
loveCoding 2019-01-04 16:20:19 +08:00
-Xmx 加上堆内存限制,实际使用内存会比这个大一些,不复杂的话换 go 重写下也是可以的
|
24
pursuer 2019-01-04 16:24:25 +08:00
不知道跑的什么服务,好多进程,可以整合到一个 JVM 进程里运行吗?
|
25
murmur 2019-01-04 16:25:35 +08:00
@luosuosile java 就是当年的美帝国主义,人人都在喊打倒美帝但是别人还是帝国啊
|
26
misaka19000 2019-01-04 16:27:27 +08:00 via Android
用 go 重写就好了
|
27
lrh3321 2019-01-04 16:36:23 +08:00 via Android
别问,问我就回用 c++重构一下。
|
28
luozic 2019-01-04 16:53:18 +08:00 via iPhone
go 快速重构一个,除非业务复杂,甚至可以上 nginx +lua 搞定。
|
29
hackerwin7 2019-01-04 17:01:31 +08:00 via iPhone
JVM CDS
|
30
huobazi 2019-01-04 17:09:52 +08:00 via iPhone 1
换 dotnet core
|
31
fuchaofather 2019-01-04 17:11:56 +08:00
可以试下用 jvm 调优, 其实我个人觉得语言差别不是很大, 差的是写代码的
|
32
byfar 2019-01-04 18:29:13 +08:00
今年都没什么人推 Rust 了呢
|
33
lancelock 2019-01-04 19:32:21 +08:00
你这什么字体啊?
|
34
chenqh 2019-01-04 19:36:19 +08:00
731/1.65,有没有用满,怕什么?空那么多内存做什么?
|
35
sticnarf 2019-01-04 19:43:21 +08:00
LZ,你这些全是同一个进程的不同线程吧……总共占了 1.65G 的 8.9%也就是 150M 左右,这已经不能接受了吗?
|
36
Trumeet OP @lihongjie0209 好的,多谢
|
37
Trumeet OP @victorywangzhcn 这个我试过,Netty 跑不起来的(
|
39
Trumeet OP @luosuosile 是啊。。最低好歹得是拍黄片啊( xd
|
40
Trumeet OP @passerbytiny @loveCoding 多谢,我去看看
|
42
liangdu 2019-01-05 01:38:54 +08:00 via Android
直接内存的默认大小为 xmx 减去一个 service,兄弟看着点调
|
43
liangdu 2019-01-05 01:41:18 +08:00 via Android
减去一个 servivor 空间的大小(上面拼写错了,不好意思)
|
44
feiyuanqiu 2019-01-05 01:43:53 +08:00
@lancelock #33 Operator Mono,这个字体最大的特色是它的斜体
|
45
yanaraika 2019-01-05 05:01:42 +08:00 via Android
算一下内存条和你花时间重构哪个贵
|
49
realkenshinji 2019-01-05 07:56:57 +08:00 via iPhone
@dk7952638 然而开发效率现在来看也不高了
|
50
KgM4gLtF0shViDH3 2019-01-05 08:37:25 +08:00 via iPhone
go 的开发效率真的不高……插入数组的方法都没有
|
51
firebroo 2019-01-05 10:32:50 +08:00 via Android
不要说语言差别不大,c 艹重构一下就知道语言差别尽然这么大
|
52
dk7952638 2019-01-05 10:37:25 +08:00
@realkenshinji 这不你也知道是现在看来并不高,在当时那可是高的很。
|
53
Camile 2019-01-05 12:02:49 +08:00
别问,问就 Rust
|
54
nekoyaki 2019-01-05 12:09:44 +08:00
htop 默认是把统一进程的不同线程全都显示出来的,你可以在 F2 ——》 Options 里把 Hide userland process threads 钩上,看到的结果就是单纯的“进程”了。不然就容易产生理解误区。
|
56
nekoyaki 2019-01-05 12:13:17 +08:00
我比较奇怪的是为什么楼上只有一个人意识到这个问题是理解误区……
|
57
zts1993 2019-01-05 12:18:00 +08:00
yuuta 最胖!
别问,问就换狗浪 |
59
sjj050121014 2019-01-05 13:28:51 +08:00
线程开那么多干嘛,浪费内存和 cpu 时间,减一半线程好过加内存
|
60
applehater 2019-01-06 01:13:46 +08:00
@yanaraika 公司最近节流还真是从服务器减配开始了,真要去重构省资源来省钱。。。
|
61
yanaraika 2019-01-06 02:34:44 +08:00 via Android
@applehater 工资太低 or 服务实在写的太烂
|