zookeeperサービス最適化のいくつかの提案


1.スナップショットファイルとトランザクションログファイルはそれぞれ異なるディスクに接続されています。zoo.cfgファイルでは、dataDirはスナップショットデータを保存しています。dataLogDirは事務ログを保存しています。zookeeper更新操作手順:まず事務ログを書いてメモリを書き、周期的にディスクに落とします。事務ログの書き込み要求に対する性能は大きく影響しており、dataLogDirのディスク性能が良好で、競合者がいないことを保証しています。
2.デフォルトのjvmにはXmx、Xmsなどの情報が設定されていません。confディレクトリの下でjava.envファイルを作成することができます。メモリ容量は必ずマシンメモリより小さく、swapを使用しないようにしてください。

export JVMFLAGS="-Xms2048m -Xmx2048m $JVMFLAGS"
3.天出zookeeperログで、zookeeper.outファイルが大きすぎることを避ける。zkEnv.shファイルログ出力方式はCONSOLEからROLLINGFILEに変更されました。

if [ "x${ZOO_LOG4J_PROP}" = "x" ]
then
#  ZOO_LOG4J_PROP="INFO,CONSOLE"
  ZOO_LOG4J_PROP="INFO,ROLLINGFILE"
fi
conf/log 4 j.propertiesは、一日でファイルを生成するように設定されています。

#zookeeper.root.logger=INFO, CONSOLE
zookeeper.root.logger=INFO, ROLLINGFIL

log4j.appender.ROLLINGFILE=org.apache.log4j.DailyRollingFileAppender
log4j.appender.ROLLINGFILE.Threshold=${zookeeper.log.threshold}
log4j.appender.ROLLINGFILE.File=${zookeeper.log.dir}/${zookeeper.log.file}
log4j.appender.ROLLINGFILE.DatePattern='.'yyyy-MM-dd
# Max log file size of 10MB
#log4j.appender.ROLLINGFILE.MaxFileSize=10MB
4.zoo.cfgファイルの中でDailyRollingFileAppender、ACL検証を無視して、権限検証の関連操作を低減し、性能を向上させることができます。
5.zoo.cfgファイルの中のskipACL=yesは、この書き込み要求の性能向上に役立ちます。要求されたデータを書くたびに、Pagecacheからディスクに固化してこそ、書き込みが成功して戻ってくるということです。書き込み要求数が一定のレベルに達した場合、後続の書き込み要求は前の書き込み要求のforceSync操作を待って、一定の遅延をもたらします。低遅延の書き込み要求を追求すれば、forceSync=noを配置し、データをPagecacheに書いて返します。しかし、マシンが電源を切っている時には、Pagecacheの中のデータが失われる可能性があります。
デフォルトはforceSync=yesで、yesのためにforceSync=noを設定できます。もしデータがディスクに固化された操作fsyncが50 msを超える場合、zookeeper.outの中からwarnログ(forceSync=yes有効)を出力します。
6.fsync.warningthresholdms=50 クライアントの接続が多すぎて、OOMを避けるためにクライアント要求を制限する
7.zoo.cfgファイルにおけるglobalOutstandingLimit=100000 ログファイルのプリキャストサイズ。preAllocSize=64M は、トランザクションを何度も書いて、スナップショットを生成します。もしスナップショットが頻繁に生成されたら、このパラメータを適切に調整することができます。
一般的なzkのアプリケーションは、読み書きよりも大きな性能(10:1)を提唱し、メタデータを記憶し、分布データを調整するために最終的に一致します。あまり頻繁に書いてキャッシュを使ったほうがいいです。
8.ログファイルは自動的にクリアされます。性能を求めるなら、手動でクリアできます。

autopurge.snapRetainCount=3 # The number of snapshots to retain in dataDir
autopurge.purgeInterval=24 # Purge task interval in hours Set to "0" to disable auto purge feature
締め括りをつける
以上はこの文章の全部の内容です。本文の内容は皆さんの学習や仕事に対して一定の参考学習価値を持ってほしいです。ありがとうございます。もっと知りたいなら、下のリンクを見てください。