芯飞云用了两个月,说说我的真实感受
折腾了两个月芯飞云的8核16G,写点东西给同样在选云服务器的人参考。我是在校学生,计算机相关专业,平时做点小程序后端、跑跑爬虫、搭个私有网盘,偶尔帮同学部署毕设项目。买不起大厂的高配机器,就在论坛上看到了芯飞云。价格确实便宜,8核16G月付85.3还带公网IP,这个价位没什么好挑的。但便宜归便宜,用起来到底怎么样,我分几块说一下,好的坏的都讲。
先说好的地方
独享核心这点比较实在。 之前用过某家的2核4G共享实例,跑个CI构建CPU直接拉满,等半天没反应。芯飞云标的是独享核心、CPU基线100%,我同时跑两个Spring Boot服务加一个MySQL,CPU负载上去之后没有出现卡死的情况,响应还算稳定。对于我这种需要跑点实际项目而不是单纯挂机的人来说,这个确定性比峰值跑分重要。
配置的"底子"是够的。 8核16G是1:2的配比,每核对应2G内存。我目前跑着一个Java后端(堆分了6G)、一个MySQL(数据量几十万行)、一个Nginx,再加两三个Docker容器,内存占用在60%到70%左右浮动,还有余量。日常接口响应没什么问题,压测的时候QPS能跑到几百,对于学生项目来说绰绰有余了。
天津节点对我够用。 我在北京上学,用起来延迟基本感觉不到。但这事得看你在哪,如果你在广东或者要服务海外用户,天津节点的物理距离在那摆着,延迟肯定会高一些。
再说说让我耗时地方
第一道坎:买完连不上。 机器开通之后用SSH连,连不上,我第一反应是密码错了。重置了两遍密码还是不行,最后去搜了一下才知道------芯飞云的安全组默认是全部关闭的,22端口根本没放行。这个设计从安全角度我理解,总比默认全开被人扫爆强,但对第一次用的人来说,确实容易懵。去控制台手动加一条放行22端口的规则就好了,不算大问题,但不说清楚的话真的会卡很久。我当时还傻乎乎地ping了半天IP,以为是机器没开起来。
第二道坎:默认参数在浪费硬件。 这是最让我意外的地方。买完机器装好MySQL和Nginx就直接跑,结果性能还不如我同学一台调过参数的4核机器,当时人都傻了。后来一查才发现:
Nginx的worker_connections默认是512,worker_processes默认是1。我买的是8核的机器,结果Nginx默认只按1核在干活。改成worker_processes auto,连接数拉到10240,才感觉并发上来了。
MySQL的innodb_buffer_pool_size默认只有128M,16G内存的机器上这个值小得可怜,大部分查询还是读磁盘。调到4G之后,同样的查询明显快了一截。我当时跑了一个统计脚本,本来要等好几秒,调完缓冲池之后基本秒出。
JVM也是,默认的动态堆内存在流量波动的时候会频繁扩容缩容,Full GC停顿比较明显。把-Xms和-Xmx固定成相同值之后好多了。这个是我帮同学调毕设的时候发现的,他的Spring Boot项目时不时卡一下,固定堆内存之后就稳了。
这些调优都不复杂,但不调的话,8核16G的性能发挥不出来,你花的钱有一部分是白花的。
数据盘不会自动挂载。 我额外加了一块数据盘,买回来之后用lsblk能看到它,但没有挂载点,程序访问不到。手动mount之后还得写进/etc/fstab,不然重启一次盘就不在了,数据库直接起不来。这个坑我踩了一次,重启后网站打不开,排查了半天。后来养成习惯,挂载完先df -h看一眼,然后reboot再确认一次,稳了才敢放数据进去。
文件描述符限制有点紧。 默认的ulimit -n是1024,跑Nginx加上一堆Docker容器的时候偶尔会报"too many open files"。后来按教程改了/etc/security/limits.conf,加到65535,重新登录之后才解决。这个对只是想跑个小网站的人来说可能碰不到,但如果同时跑几个容器,还是提前改一下比较省心。
总结
芯飞云适合什么人?我觉得是:手里预算有限、需要一台性能对得起配置的机器、不介意自己动手调参数的人。 它的价格确实低,但底子是干净的虚拟机,独享核心、SSD存储,没有在硬件上偷工减料。代价就是控制台没有帮你预设任何东西,安全组要自己开、数据盘要自己挂、Nginx和MySQL的参数要自己改。
如果你有基本的Linux运维知识,这些都不算事;如果是完全的新手,可能要花点时间踩坑。我当时折腾了差不多一个周末才把环境理顺,中间搜了不少教程。但理顺之后,用起来还是挺顺手的。反正我用下来,机器本身对得起价格,需要付出的就是一点调优的耐心。
当然各个厂商也会不定时的在官网发布一些活动,如果目前你还不需要使用,那可以蹲蹲活动,会更优惠。
