質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Q&A

解決済

4回答

5633閲覧

サーバの時刻のズレについて

tkda

総合スコア23

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

1グッド

4クリップ

投稿2015/11/27 02:38

編集2015/11/27 06:49

さくらのクラウド(仮想サーバ)にてCentOS 6.5のサーバを運用しているのですが、時刻に25秒のズレが生じております。
NTPサーバーによる時刻同期も行っているのですが、正しく同期されません。

ntpq -p

remote refid st t when poll reach delay offset jitter

=====================================================================
*ntp-b3.nict.go. .NICT. 1 u 14 64 17 17.997 -1.667 1.409
+ntp1.jst.mfeed. 133.243.236.17 2 u 9 64 17 15.973 -0.730 2.682
+ntp2.jst.mfeed. 133.243.236.17 2 u 15 64 17 13.952 0.502 1.142
ntp3.jst.mfeed. 133.243.236.17 2 u 8 64 17 17.953 -0.217 1.372

ただ、phpでdate('H:i:s'); を実行した結果にはズレが生じていないことが分かりました。
以下、比較の数字を記載します。

■サーバー

date
2015年 11月 27日 金曜日 11:48:55 JST

hwclock
2015年11月27日 11時48分28秒 -0.797000 秒

■PHP

<?php echo date('H:i:s'); ?>

11:49:22

どうぞ宜しくお願いします。

※追加※
以下の様なcronを5分毎に実行してみました。

*/5 * * * * echo date +"\%Y/\%m/\%d \%H:\%M:\%S" >> /tmp/cron.log

その結果、秒数は正確な時刻「00秒」ですが、時間が1分ズレてcronのスケジュールが走っていることが分かりました。
詳細は以下のとおりです。

2015/11/27 15:45:35

cron動作時の正しい時刻:15:46:00

ikuwow👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yuba

2015/11/27 03:02

実マシンですか、仮想マシンですか? もし仮想マシンなら、VMWare Toolsのようなゲスト側支援ソフトウェアは動いている状態ですか?
tkda

2015/11/27 04:45 編集

さくらのクラウドを利用しておりますので、仮想サーバーになります。VMWare Toolsについては把握しておりません。
guest

回答4

0

自己解決

yum updateでサーバを最新の状態にアップデートしたところ、時刻の誤差がなくなりましたので遅くなりましたが報告します。具体的に何が悪さをしていたのか記載できずに申し訳ないです。

投稿2016/01/13 08:45

tkda

総合スコア23

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ゲストOSからはハードウェアクロックは変えられないと思います。
また、ハードウェアクロックは起動時に参照されるだけなので、rcスクリプトでntpdateを動かしていればずれていてもあまり問題はないと思います。

ntpdも正しく動いていそうだし、phpの値は正しいとのことですから、システムクロックがおかしいと言うよりは、dateコマンドの異常と思えます。

とすれば考えられるのは以下の2点
・/bin/dateが壊れている
・/bin/dateではない別のスクリプトが動いている

投稿2015/12/02 06:50

chun

総合スコア324

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tkda

2015/12/02 07:08

ありがとう御座います。 確認の上でまた報告させていただこうと思います。
guest

0

php は gettimeofday(), date は clock_gettime(CLOCK_REALTIME) を使うという、システムコールの違いはありますが、両方ともシステムクロックの値を取得するものですので、通常は相違はないはず ...... 変ですね。

cron の検証結果を見ると、date コマンドが 85秒(1分25秒)遅れということでしょうか?
kernel 起動直後からそうなのか、それともだんだんと遅れていくのでしょうか?
php (gettimeofday()) の方が正しいというのは、他のシステムと比べて?

ヤマ勘ですが、
cpuspeed が稼働していると、CPU の周波数が可変になるので、補正のしかたによってはズレがでるかもしれません。また、仮想環境&SMP ならば irqbalance も悪さをするかもしれません。

あとは、Try してうまくいくかどうか、というレベルですが、

  • kernel 起動パラメータで clocksource= を変更する
cat /sys/devices/system/clocksource/clocksource0/available_clocksource (可能なclocksource) cat /sys/devices/system/clocksource/clocksource0/current_clocksource (現在のclocksource)
  • kernel 起動パラメータで divider=10 などで、クロック精度を落とす。
    CONFIG_HZ_1000=y (1000Hz) ならば divider=10 で 100Hz に。

投稿2015/11/27 06:08

TaichiYanagiya

総合スコア12141

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tkda

2015/11/27 06:17

正しい時刻に誤りがありました(修正済みです)。 date コマンドが 25秒遅れです。 まずは修正点のみコメントさせていただきます。
tkda

2015/11/27 06:39

kernel起動直後かどうかは未確認です。 phpの方が正しいというのは、他のシステムと比べてです。 原因が分からない場合は一度パラメータを変更の上で再起動してみようと思います。
tkda

2016/01/13 08:46

kernel 起動パラメータの修正だけでは解決には至りませんでした。ご回答ありがとう御座います。
guest

0

システム(OS)の時刻とハードウェアの時刻がずれているのではないでしょうか? hwclock コマンドでチェックしてみて、違うようならhwclock -wコマンドで同期させる対策が必要でしょう。

投稿2015/11/27 02:44

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tkda

2015/11/27 02:59

hwclockの値を追加しました。 date: 11:48:54 hwclock: 11:48:28 php: 11:49:22 と見事にバラバラでした。 hwclock -wコマンドを実行したのですが、それぞれの値に変化はありませんでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問