📢 この記事は gemini-2.5-flash によって翻訳されました
この記事は
Hiyoung
が書いたんだ。
背景知識:
Linuxの時刻についてざっくりと
Linuxシステムには2つの時計があるんだ。1つはハードウェアクロック、つまりBIOS時間。もう1つはシステムクロックで、LinuxシステムのKernel(カーネル)時間のことだよ。
Linuxシステムでプログラムが動くときに読み込む時間は、全部システムKernel(カーネル)時間なんだ。
Linuxが起動するたびに、システムKernel(カーネル)はまずハードウェアクロックの設定を読み込むんだけど(このときのハードウェア時間が正確とは限らない)、その後、システムクロックはハードウェアとは関係なく動き続けるんだ。
だから、Linuxの時間を永続的に変更して正確にしたいなら、ハードウェア時間を永続的に変更しないといけないんだ。そうしないと、Linuxを再起動するたびにシステム時間が元のハードウェア時間に戻っちゃうよ。
Linuxの時刻関連コマンド
システムKernel(カーネル)クロックに関するコマンドは timedatectl か date だね。
ハードウェアBIOSクロックに関するコマンドは hwclock か clock だよ。
1. LinuxのGLIインターフェースで data を入力して現在のLinuxシステム時間をチェック
次に hwclock --show を入力してハードウェア時間をチェックするよ。
2. Linuxシステム時間の校正(NTPサービスを使うときはシステムがネットに繋がってる必要があるよ)
- CentOSでのNTPサービスインストールと設定の手順はこんな感じ:
1
2
| # NTPサービスパッケージをインストール
sudo yum install ntp
|
1
2
| # NTPサービスをデフォルトで起動するように設定
sudo chkconfig ntp on
|
1
2
| # 起動パラメータを変更して、-g -x オプションを追加。これでシステム時間の誤差が大きくてもNTPサービスがちゃんと動くようになるよ。
sudo vi /etc/sysconfig/ntpd
|
1
2
| # NTPサービスを起動
sudo service ntpd restart
|
- Ubuntu/DebianでのNTPサービスインストールと設定の手順はこんな感じ:
1
2
| # NTPサービスパッケージをインストール
sudo apt-get install ntp
|
1
2
| # 起動パラメータを変更して、-g -x オプションを追加。これでシステム時間の誤差が大きくてもNTPサービスがちゃんと動くようになるよ。
sudo vi /etc/default/ntp
|
1
2
| # NTPサービスを起動
sudo service ntp restart
|
1
| hwclock --systohc --localtime (こっちの方が効果的みたいだよ)
|
または
1
| timedatectl set-local-rtc 1
|
または
3. Google BBRアクセラレーションを有効にする
この記事で紹介する方法は、Debian 9以降のDebian Linuxが対象だよ。他のOSだとどうなるか分からないんだ。
注意してほしいのは、ここでの設定パラメータはGoogle BBRを有効にするだけじゃなくて、ネットワークパラメータの一連の最適化も含まれてるってこと。そのままコピーして実行すればOKだよ。
Google BBRでVPSサーバーをワンクリックで高速化するのはすごく簡単なんだ。SSHでVPSにログインしたら、次の2つのコマンドをそれぞれ実行するだけ(ハイライト表示された部分をマウスで選択して、右クリックでコピー、rootユーザーの#の後に貼り付けてエンターを押してね)。
コマンド1
1
| wget https://raw.githubusercontent.com/bannedbook/fanqiang/master/v2ss/server-cfg/sysctl.conf -O -> /etc/sysctl.con
|
もし wget: command not found というエラーが出たら、それはシステムにwgetがインストールされてないからだよ。先にwgetをインストールする必要があるんだ。
<strong>apt-get install -y wget</strong>
コマンド2
実行に成功したら、だいたいこんな感じの出力になるはずだよ(個人の状況によって違うけど):
fs.file-max = 51200
net.ipv4.conf.lo.accept_redirects = 0
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.ip_local_port_range = 10000 65000
net.ipv4.tcp_fin_timeout = 15
net.ipv4.tcp_fastopen = 3
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.tcp_rmem = 32768 436600 873200
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 2
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_max_tw_buckets = 9000
net.ipv4.tcp_max_syn_backlog = 65536
net.ipv4.tcp_mem = 94500000 91500000 92700000
net.ipv4.tcp_max_orphans = 3276800
net.ipv4.tcp_mtu_probing = 1
net.ipv4.tcp_wmem = 8192 436600 873200
net.core.netdev_max_backlog = 250000
net.core.somaxconn = 32768
net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.rmem_max = 67108864
net.core.wmem_max = 67108864
net.ipv4.tcp_congestion_control = bbr