和一个应用性能有关的几点。
1、cpu
cpu型号决定了它的最大线程数,这对服务器很重要。
cpu在压力增加时,占用量应该呈线性增加。如果依旧平稳,则有可能是代码中产生等待,需要调整代码。
2、内存
swap就是相当于虚拟内存,在现在基本由物理内存解决,不需要设置很大。
分析gc(垃圾回收),可以判断整个jvm内存是否过小,cpu资源都用在gc上,影响对于请求的响应处理。
jvm可配置堆内存,自动划分的栈内存是堆内存的1/10,栈内存是一个方法中所能使用的最大内存,溢出则会导致严重的应用问题。
3、线程
一个jvm建议使用150个线程,这个一般在容器中配置。
对外连接,会产生实际连接,一般使用连接池,但更重要的是对于连接数的估算与调整。比如100用户使用5个oracle线程,每次sql处理占用0.05s,那每个用户平均等待可能就是1s。
4、工具
JProfiler java性能监控工具
LoadRunner 并发压力测试工具