这篇文章是给自己记录mark用的.
大家好,我是傻鱼,这个就是我个人记录mark用,大家看看并发表意见,欢迎私信讨论.
主要步骤流程如下
- 1.对使用场景的分析.
如果是中间件,kafka rocketmq需要考虑业务的场景,什么时候业务高峰期,什么时候业务低谷期,高峰期的流量峰值是多少,需要选择什么合适的中间件满足这个要求.
- 2.物理机\虚拟机评估.
虚拟机主要是根据集群情况,判断单机大概的量.来判断物理机器大概要多少内存,多少cpu.
- 3.磁盘大小评估.
如果是文件存储类型,类似于cos,es,hbase之类的则需要对数据的量级,以及数据大小进行评估.
- 4.内存评估.
本地运行单个服务的压力,这个可以看各个压测报告进行判断.
- 5.cpu压力评估.
Cpu压力往往是我们运行考虑最少的一点,因为通常来说cpu都会随着内存上涨而上涨,而我们如果不是计算集中型服务很少会出现cpu达到峰值的情况.
- 6.网络需求评估.
这个需要计算计算机qps吞吐量,每次吞吐量的io情况,类似于加载模型,大对象传输,这个就很需要对网络进行评估. 评估方法同压测.进行大io对象跑峰值压力.
- 7.集群规划.
这个比较考验同学的架构能力,通常情况下微服务都是进行动态横向拓展,一个一个服务部署,这个部分建议能用钱解决的事情,就用钱解决(多买几台性能好的服务器).
如何分配jvm虚拟机一个问题:
如果给你一个32g 4核的机器作为java的服务器. 你的jvm参数分别应该设置为多少才合理.
答案:1/2总内存.
一般jvm虚拟机堆的建议参数是total机器的1/4 所以他的-xms,-xss应该是8g,但是在实际应用上我们发现堆空间内存可以再扩大一点. 所以在日常应用中如果一个服务器只运行java之后,我会分配1/2的内存.
为什么不建议到3/4以上的内存:很多时候日志排查需要安装arthas,这个也需要大量内存. 其次就是一般来说年轻代Eden区的空间一般为堆空间的1/2所以按照上述的分配方法.
java程序运行过程实际可能已经占用24G的内存了.另外还需要给一定的空间给方法区和本地方法栈.如此计算.建议的堆空间为1/2.