天天看點

騰訊雲伺服器優化

起因

大概就是在幾個月之前本人租了一台伺服器用來搭建自己的部落格(原來的部落格是在阿裡雲香港伺服器上面,在十一期間被和諧了),于是租用了1核1G記憶體的雲伺服器(三年800多元),可是在使用的過程中發現cpu和記憶體占用有點異常,查了下發現以下問題:

  • 伺服器上面跑着幾個監控軟體(并沒有什麼),占了好多CPU.
  • 伺服器沒有swap分區,1G雖然夠用,但是優點不爽
  • 記憶體的緩存部分占得比例比較大
  • 磁盤變大了好多,但是本人安裝的幾個軟體都不會占這麼多磁盤

是以,就有了如下操作:

删除騰訊雲的監控軟體

執行下面指令:

bash /usr/local/qcloud/stargate/admin/uninstall.sh
bash /usr/local/qcloud/YunJing/uninst.sh
bash /usr/local/qcloud/monitor/barad/admin/uninstall.sh           

複制

增加swap分區

檢視自己記憶體使用狀況,并沒有swap分區,雖然暫時記憶體是夠用的,但是對于這種有強迫症的人來講是受不了的.

root@VM-0-17-debian:~# free -h
              total        used        free      shared  buff/cache   available
Mem:           868M        394M        253M        6.0M        220M        342M
Swap:          0         0        0           

複制

  • 為自己的伺服器建立快照,不管怎麼說,在進行危險操作之前進行備份是一個比較好的習慣,可以省去好多麻煩.
  • 執行下面指令建立分區:
dd if=/dev/zero of=/mnt/swap2g bs=1M count=2048
mkswap /mnt/swap2g
swapon /mnt/swap2g           

複制

  • 修改

    /etc/fstab

    檔案,增加下面資料
/mnt/swap2g          swap                 swap       defaults              0 0           

複制

增加完了之後如下所示:

root@VM-0-17-debian:~# cat /etc/fstab
/dev/vda1            /                    ext3       noatime,acl,user_xattr 1 1
proc                 /proc                proc       defaults              0 0
sysfs                /sys                 sysfs      noauto                0 0
debugfs              /sys/kernel/debug    debugfs    noauto                0 0
devpts               /dev/pts             devpts     mode=0620,gid=5       0 0
/mnt/swap2g          swap                 swap       defaults              0 0           

複制

  • 修改啟動配置,修改檔案

    vi /etc/default/grub

    ,增加下面内容:
GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1"           

複制

  • 更新啟動

    grub

    :
update-grub && update-grub           

複制

  • 最後一部重新開機伺服器就好了
root@VM-0-17-debian:~# free -h
              total        used        free      shared  buff/cache   available
Mem:           868M        398M        334M        6.0M        135M        338M
Swap:          2.0G         96M        1.9G           

複制

參考文檔: 騰訊雲伺服器添加SWAP分區

多餘系統日志和buffer記憶體清理

定時清理

我整理了下面的腳本,加到定時任務裡面即可

sync  # 強制将緩存寫到磁盤
apt clean # 清理安裝軟體殘留,騰訊雲貌似會定時update
echo 3 > /proc/sys/vm/drop_caches  # 釋放記憶體
echo "" > /var/log/btmp  # 和郵件相關的日志,我伺服器上面基本用不到,但是居然達到了好幾百M大小
cd /var/log/nginx && rm -rf *.gz && rm -rf *.1 # 清理日志
cd /var/log/ && rm -rf *.gz && rm -rf *.1 # 清理日志
cd /var/log && rm -rf auth.log-* # 清理日志           

複制

定時任務如下,我寫了30分鐘,時間有點短,正常自己可以設定到3-6小時左右.

*/30 * * * * bash /usr/local/zeek/clean.sh           

複制

journalctl

日志 清理

執行下面指令檢視日志大小,如果太小了就不用清理了,我執行的時候比較大.

journalctl --disk-usage           

複制

修改

/etc/systemd/journald.conf

,主要下面兩個配置

SystemMaxUse=16M
ForwardToSyslog=no           

複制

然後重新開機

journald

服務:

systemctl restart systemd-journald.service           

複制

再次檢視日志大小,我這邊隻剩餘18M大小了.

root@VM-0-17-debian:/var/log# journalctl --disk-usage
Archived and active journals take up 18.0M in the file system.           

複制

docker

限制記憶體

限制

lute-http

的記憶體,限制成了這麼一點點,也不知道夠不夠用,從現象來看沒什麼毛病.

docker run --detach --rm --network=host -m 80M b3log/lute-http           

複制

限制

solo

部落格的記憶體,300M應該夠了吧,

docker run --detach --name solo --network=host -m 300M \
    --env RUNTIME_DB="MYSQL" \
    --env JDBC_USERNAME="root" \
    --env JDBC_PASSWORD="123456" \
    --env JDBC_DRIVER="com.mysql.cj.jdbc.Driver" \
    --env JDBC_URL="jdbc:mysql://127.0.0.1:3306/solo?useUnicode=yes&characterEncoding=UTF-8&allowPublicKeyRetrieval=true&useSSL=false&serverTimezone=UTC" \
    --volume /dockerData/solo/skins/:/opt/solo/skins/ \
    b3log/solo --listen_port=8080 --server_scheme=https --server_host=www.zeekling.cn \
    --lute_http=http://127.0.0.1:8249           

複制

ok,這樣子伺服器就可以搞很多其他事情了。目前我的伺服器上面跑了:個人部落格、gitea私服、jsnkins服務,以及各個服務使用到的mysql和redis服務。