环境介绍
宿主机: Ubuntu 22.04,已装好kvm
硬盘: ubuntu安装在512g ssd,两个4T机械硬盘(忍不住夕夕低价诱惑,344入了海康希捷ST4000VX000)组zpool mirror,可用空间4T,挂载到/tank目录下,打算建个3T的磁盘镜像给群晖。
群晖选的是DS918+镜像,版本DSM 6.2.3-25426
虽然NAS空载时功耗不高,挂两3.5寸机械硬盘控制在40w以内,但24小时开着也是浪费。
我现在的方案是一个树莓派24x365天开机(5w左右),树莓派通过tailscale穿透,在外需要使用NAS时,连上树莓派,通过树莓派发送magic packet开机,crontab设置凌晨自动关机。
除了在BIOS里开启Wake on lan, ubuntu也需要设置过,才能支持Wake on Lan。
家里的NAS服务器目前是1个512 SSD + 4T HDD +1T HDD,系统装的Win10, hyper-v开虚拟机。但是发现hyper-v效率不高,i5 8400处理器分了2个核,4g内存,装ubuntu空载甚至有卡顿的感觉,决定试试linux下的kvm虚拟机。
同时数据安全起见,打算用zfs on linux,4T硬盘分1个T的分区和1T硬盘组RAID1(zpool mirror模式), 重要数据放这里,非重要数据放另外的3T分区。以后1T不够用了,再买新硬盘扩容。
先在虚拟机上测试。
1 | virt-install --name ubuntu --memory 4096 --vcpus=2 \ |
--os-variant
可用值选项查看 virt-install --osinfo list
, 但ubuntu22.04
不在列表里貌似也没问题
安装linux用lvm创建分区,方便后期扩容
可使用vnc viewer连接安装操作系统, 端口5911,密码000000 会持久化,一直可用,配置保存到/etc/libvirt/qemu/ubuntu.xml ,命令virsh dumpxml ubuntu
可查看配置
如果是从已装好的硬盘文件导入:
1 | virt-install --name ubuntu2 --memory 4096 --vcpus=2 \ |
以nacos 2.0.3版本为例, 使用docker compose管理。三节点ip分别为
节点 | IP |
---|---|
node1 | 192.168.0.1 |
node2 | 192.168.0.2 |
node 3 | 192.168.0.3 |
数据库我们使用mysql 数据库,内置数据源也是可以的,会自动同步,但生产环境,还是建议使用云厂商提供的数据库,安全有保障。
SQL来自官方github:
https://github.com/alibaba/nacos/blob/master/distribution/conf/mysql-schema.sql
我们都知道类的加载过程有加载
->验证
->准备
->解析
->初始化
几个步骤,才能正式使用,当我们用new指令创建对象时,虚拟机会判断该类是否已经完成加载,如果没有,先执行上述的加载步骤,如果已经完成加载,就开始创建对象。一旦一个类加载完成,待创建对象所需的内存大小就已经确定了,为对象分配空间,等同于把一块确定大小的内存从堆里划分出来。
如果垃圾收集器采用标记整理算法,Java堆中的内存是规整的,所有用过的内存都在一边,空闲的内存放在另一边,中间放着一个指针作为分界点的指示器,那所分配内存就仅仅是把那个指针向空闲空间那边挪动一段与对象大小相等的距离。
如果Java堆中的内存并不是规整的(标记清除算法),已使用的内存和空 闲的内存相互交错,那就没有办法简单地进行指针碰撞了,虚拟机就必须维护一个列表,记 上哪些内存块是可用的,在分配的时候从列表中找到一块足够大的空间划分给对象实例,并更新列表上的记录.
初始内存跟最大内存最好相等,防止内存不够时扩充内 存或者Full GC,导致性能降低
以上配置可以推出老年代内存512-100=412M
如果程序启动慢,观察是否在启动过程中频繁full gc,如果是,可能是程序比较大,因为Metaspace存放类的信息,很快达到了21M,频繁Full gc扩容,可以试着改大。建议MaxMetaspaceSize和MaxMetaspaceSize改成一样
JVM优化,就是尽可能让对象都在新生代里分配和回收,尽量别 让太多对象频繁进入老年代,避免频繁对老年代进行垃圾回收,同时给系统充足的内存大小,避免新生代频繁的进行垃圾回收。没有通用的调优参数,需要根据业务场景来。
忍不了wordpress的缓慢,没找到一个完美支持markdown,又看得上的主题,是这次迁移的原因。按官方文档迁移后,现在的效果是文章基本都没问题,但是类目,tag之类的链接全变了,所以会有很多404,但还好,反正博客访问量也不大。静态网站,速度贼快,哈哈。
编辑器,我现在用的是Visual Studio Code,图片用PicGo插件,配上阿里云oss,非常方便。部署用的是hexo-deployer-rsync插件,一条命令,打算写个小脚本,配上gitlab runner,实现提交后自动部署。