私たちは複数のサーバーと、クラウドサーバー上のデータベースを実行しています。 JVMがCESTで動作する必要があるUTC時間で動作しているので、JVMは2時間遅れているようです。CentOSサーバーでJVMロケールの問題を修正するにはどうすればよいですか?
私は、サーバーにsshとdate
を実行すると、私は以下の取得:
Fri Sep 16 09:21:16 CEST 2016
当社のデータベースには、システム時刻に設定され、それは上記と同じ(正しい)の時間を持っています。 これはまさに私が期待しているものです。
Log4j2をロガーとして使用しているMy Javaサーバーのログファイルを見ると、ログメッセージのTimestamps
は正常です(タイムゾーンはlog4j2.xml
ファイルに設定されています)。ただし、サーバー自体から出力された日付はオフです。 log4j2設定ファイルからタイムゾーンを削除すると、デフォルトでUTCに設定されます。
しばらくの間、上記を見た後、私は、「ロケール」コマンドを実行し、次のように得た:
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
これは明らかに間違っています。
ライブサーバーでこれを変更する前に、テストサーバー上のlocale.conf
ファイルを変更してリブートし、変更がどうなるか確認しました。彼らはしなかった。テストサーバーで実行されているJavaサーバーは、変更を加える前と同じ時間でした。
私はここで何が欠けていますか? これらのサーバーはサーバー上でサービスとして実行され、独自のユーザーとグループがあります(関連性があるかどうかわかりません)。
ご協力いただければ幸いです。