チューニングパラメータ
本付録では、Qmonus SDKの起動パラメータにおけるチューニング可能項目を説明します。
- チューニングパラメータ
- Common
--timezone
--curl_max_clients
--address
--port
--ws_port
--ws_max_message_size
--callout_connect_timeout
--callout_request_timeout
--websocket_aging_timeout
--plugins_upload_chunk_size
--hotspot_sharing_mode
--redis_conn_pool_min
--redis_conn_pool_max
--redis_conn_pool_rebuild_retry_count
--closedloop_default_apigw_host
--hotspot_script_timeout
--github_access_token
--github_plugins_repos
--github_main_branch
--github_default_branch
--gitflow_style
--slack_notify_token
--heartbeat_url
--heartbeat_interval
--code_style
- API gateway
- Transaction
- Scenario
- Database
- Keystone
- Schedule
- Lambda
- Collector
- Reflector
--reflection_bulk_size
--metrics_server_type
--metrics_server_endpoints
--metrics_server_connect_timeout
--metrics_send_bulk_size
--metrics_send_retry_interval
--metrics_send_retry_count
--metrics_send_unit
--metrics_send_queue_max_size
--metrics_sent_expire_days
--metrics_sent_backup_mode
--metrics_sent_queue_max_size
--metrics_unsent_expire_days
--metrics_unsent_backup_mode
--metrics_unsent_queue_max_size
--metrics_resend_queue_max_size
--collection_sniffer_mode
--collection_sniffer_bulk_size
--collection_sniffer_queue_max_size
--worker_watch_interval
Common
Commonのチューニングパラメータは全てのメタマイクロサービスに共通して存在します。
もし全てのサービスに適用したい場合は、それぞれに対して明示的に指定する必要があります。
--timezone
タイムゾーンを指定します。デフォルトは、Asia/Tokyo
です。尚、Scheduleサーバは、JSTとUTCのみをサポートしているため、Asia/Tokyo
と指定した場合は、JSTでそれ以外はUTCで動作することに注意が必要です。
--curl_max_clients
curlクライアントの同時最大接続数を指定します。デフォルトは、256
です。
--address
サーバアドレスを指定します。デフォルトは、127.0.0.1
です。
--port
HTTP待ち受けポート番号を指定します。デフォルトは、9099
です。
--ws_port
Websocketのポート番号を指定します。デフォルトは、None
です。None
の場合は、--port
と同一ポートとなります。
Warning
WebSocketポートを指定する場合は、Frontal側のWebSocket接続先ポートも変更する必要があります。
--ws_max_message_size
Websocket通信におけるメッセージ最大サイズを指定します。デフォルトは、10
Mbytesです。
--callout_connect_timeout
HTTP通信のデフォルト接続タイムアウト値を指定します。デフォルトは、60
秒です。callout
組込み関数で個別指定しない場合は、本パラメータが適用されます。
--callout_request_timeout
HTTP通信のデフォルト要求タイムアウト値を指定します。デフォルトは、60
秒です。callout
組込み関数で個別指定しない場合は、本パラメータが適用されます。
--websocket_aging_timeout
Qmonus SDKのFrontalとバックエンドサーバの間で確立するWebsocketはキープアライブでセッションを維持しており、このセッションのエージングタイムアウトを指定します。
デフォルトは、180
秒です。無通信状態でタイムアウトが発生した場合、バックエンドサーバはWebsocketを切断します。
--plugins_upload_chunk_size
Scenarioのプラグインインストール時に一括でアップロードする件数を指定します。デフォルトは、256
です。
--hotspot_sharing_mode
Scenarioサーバにロードされているプラグインを同期するモードです。デフォルトは、False
です。Scenarioサーバ以外のロールで例えば、APIGWのforbidden_process
などのカスタムスクリプトからATOMやデータベース操作をする場合は、True
に設定してください。
--redis_conn_pool_min
Qmonus SDKは、プラグイン定義情報や揮発性が高く高速な入出力を要求するトランザクション情報をRedisメモリストアに蓄積します。Redisコネクションプールの最小サイズを指定します。デフォルトは、1
です。
--redis_conn_pool_max
Redisコネクションプールの最大サイズを指定します。デフォルトは、128
です。
--redis_conn_pool_rebuild_retry_count
Redisコネクションプールから有効な接続が得られない場合にプールの再生成を試行する回数を指定します。リトライオーバした場合、Qmonus SDKインスタンスは、OutOfServiceに遷移して再開を試みます。
--closedloop_default_apigw_host
ClosedLoopを実行しているコンテナにアクセスするためのエンドポイントを指定する起動パラメーターです。デフォルトはNone
です。
--hotspot_script_timeout
各種プラグインで実行するユーザカスタムコードの実行タイムアウト値を指定します。デフォルトは、7200.0
秒です。
--github_access_token
githubプライベートアクセストークンを指定します。デフォルトは、None
です。
--github_plugins_repos
githubプラグインリポジトリを指定します。デフォルトは、None
です。カンマ区切りで複数指定することができます。
--github_main_branch
githubリポジトリのメインブランチ名を指定します。デフォルトは、main
です。
--github_default_branch
githubリポジトリからデフォルトでcheckoutするブランチを指定します。デフォルトは、develop
です。
--gitflow_style
gitフローのスタイルを指定します。デフォルトは、gitlabflow
です。
gitflow
、gitlabflow
、qmonusflow
が選択できます。
Note
githubの設定は、Docs » リファレンス » ワークスペース
を参考にしてください。
Note
Kernel parameters
以下のカーネルパラメータ設定を推奨しています。
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 10
--slack_notify_token
slack
組込み関数で利用するSlackのデフォルトAPIトークンを指定します。デフォルトは、None
です。詳細は、Docs » リファレンス » ビルトインオブジェクト
に記載されているslack
関数を参照ください。
--heartbeat_url
定期的に外部のエンドポイントにハートビートを送信するためのURLを指定します。デフォルトは、None
です。指定されたURLではPOSTメソッドを受け付ける必要があります。ボディーにはQmonus SDKインスタンスのシステム情報が格納されます。
--heartbeat_interval
ハートビート間隔を指定します。デフォルトは、15000
msecです。
--code_style
プラグインのpythonコードフォーマットの設定ファイルを指定します。デフォルトは、None
です。
pep8, pycodestyle, flake8などのセクションを記述した.pep8
、.flake8
、tox.ini
、setup.cfg
などの設定ファイルを指定してください
API gateway
--statistics_expire_seconds
APIGWのAPI統計情報の保持期間を指定します。デフォルトは、86400
秒です。
--trace_mode
APIGWのAPIトレース有効化モードを指定します。デフォルトは、True
です。False
の場合は、API通信をモニターできなくなります。
--deep_monitoring
APIGWのAPIトレースでHTTPボディー情報を含めるか否かを指定します。デフォルトは、True
です。False
の場合は、API通信モニターでボディー情報は非表示になります。
Note
trace_mode
がTrue
の場合は、FrontalでリアルタイムにHTTP通信をモニタリングできます。システムの負荷を低減したい場合はFalse
にすることでトレースを抑制できます。
deep_monitoring
がTrue
の場合は、Frontalのモニタリングでボディーの中身まで確認できます。システムの負荷を低減したい場合はFalse
にすることでボディー情報の転送を抑制できます。
--credential_expires
APIGWのQmonus認証クレデンシャルの有効時間を指定します。デフォルトは、24
時間です。
--local_scope_auth_mode
APIGWのルーティングスコープがlocal
の場合にQmonus認証を有効化するか否かを指定します。デフォルトは、False
です。詳細は、Docs » API Gateway » APIルーティング
に記載されているAPIの認証スコープについて
を参照ください。
--lambda_terminate_poll_interval
APIGWのLambdaイベントチェインの終端待ち合わせタイマーのポーリング間隔を指定します。デフォルトは、5
秒です。
--lambda_terminate_poll_timeout
Lambdaイベントチェインの終端待ち合わせるタイマーのタイムアウトを指定します。デフォルトは、300
秒です。
--additional_transmission_headers
APIGWではHTTP応答に含まれる拡張ヘッダは原則透過しませんが、透過させたい拡張ヘッダがある場合は、カンマ区切りで指定できます。デフォルトでは、x-subject-token
のみが指定されています。
Warning
拡張ヘッダのキー名は、lowercaseで指定する必要があります。
--parallel_queue_bulk_read_size
APIGWのキューイング機能でparallel
タイプのキューを利用する場合に各ワーカーが一括で読み出す件数を指定します。デフォルトは、32
です。
--file_upload_api_path
APIGWが提供するファイルアップロードAPIのリクエストパスを指定します。デフォルトは、None
です。デフォルト状態では、/upload/{filepath}
で待ち受けます。
Transaction
--transaction_timeout
トランザクションのデフォルトタイムアウトを指定します。デフォルトは、600
秒です。
--transaction_log_backup_mode
トランザクションのログをデータベースに履歴保存するモードを指定します。デフォルトは、False
です。
--transaction_destroy_delay
終了済のトランザクションをメモリストアから消滅させるまでの保護時間を指定します。デフォルトは、3600
秒です。
Scenario
--template_params_default_expire
Scenarioのテンプレートサービスでレンダリングモードがdbモード
の場合にexpire_seconds
を指定しなかった場合は本パラメータがデフォルトで適用されます。デフォルトは、3600
秒です。
--model_pkey_default_name
Scenarioのモデルサービスでプライマリキーを指定しなかった場合にデフォルトで生成されるプライマリキー名を指定します。デフォルトは、__id__
です。
--model_pkey_default_uuid
Scenarioのモデルサービスでプライマリキーを指定しなかった場合にデフォルトで生成されるプライマリキーの型をUUIDとするかを指定します。デフォルトは、True
です。
--atom_recovery_policy
トランザクションリカバリ時のATOMインスタンスの復元をトランザクションサーバにスナップショットされているデータをソースとするかデータベースに永続化されているデータをソースとするかを指定します。デフォルトは、db
です。トランザクションサーバのスナップショットから復元したい場合は、transaction
を指定してください。
--transaction_direct_mode
Transactionサーバへの直接通信可否モードを指定します。デフォルトは、False
です。
--transaction_server_address
Transactionサーバのアドレスを指定します。デフォルトは、127.0.0.1
です。
--transaction_server_port
Transactionサーバのポート番号を指定します。デフォルトは、9101
です。
Tip
ScenarioサーバからTransactionサーバ間の通信は、デフォルトでは、APIGWを介して行います。そのため、FrontalのAPI通信モニターでこれらの内部通信をモニタリングできます。しかしながら、プロダクション環境などでは通信負荷を軽減するため、transaction_direct_mode
をTrue
に設定することを推奨しています。さらに、通信不可を軽減したい場合は、Scenario
とTransaction
サーバを同居させて稼働することも可能です。この場合、双方の間でのHTTP通信は発生せず、ScenarioサーバはTransactionをライブラリとして利用するため高速です。注意点として同居することにより、Redisメモリストアも同居するため、デプロイ戦略におけるデータ移行は留意する必要があります。
--python_default_imports
デフォルトでインポートするPythonモジュールをカンマ区切りで指定できます。指定するとカスタムスクリプト空間ではimport済みの状態になります。デフォルトは、None
です。
Note
python_default_imports
で指定せずともカスタムスクリプト空間で以下のモジュールは、デフォルトでimportされています。
traceback
asyncio
asyncssh
aiohttp
io
re
time
uuid
json
jsonschema
yaml
csv
math
datetime
copy
base64
hashlib
xmltodict
ipaddress
urllib
sqlalchemy
statistics
--job_queue_size
ScenarioサーバのJobサービスにおけるJobキューの長さを指定します。デフォルトは、65535
です。
--job_queue_bulk_read_size
JobコンシューマがJobキューから一括で読み取るサイズを指定します。デフォルトは、32
です。
Database
Databaseのチューニングパラメータは全てのメタマイクロサービスに共通して存在します。
もし全てのサービスに適用したい場合は、それぞれに対して明示的に指定する必要があります。
--db_product
データベース製品を指定します。mysql
、postgresql
、sqlite
が選択できます。デフォルトは、mysql
です。
--db_host
データベースサーバのアドレスを指定します。デフォルトは、localhost
です。
--db_port
データベースサーバのポート番号を指定します。デフォルトは、3306
です。
--db_name
データベース名を指定します。デフォルトは、axis
です。
--db_user
データベースのユーザ名を指定します。デフォルトは、axis
です。
--db_pass
データベースのパスワードを指定します。デフォルトは、axis
です。
--db_charset
Pluginに定義されたテーブルの文字セットを指定します。こちらのパラメータはdatabaseごとに指定する文字セットです。デフォルトは、utf8
です。
Tip
mysql8.0よりutf8はutf8mb3のエイリアスとなっているため、utf8を指定した場合utf8mb3が設定されます。
--db_collate
Pluginに定義されたテーブルの照合順序を指定します。こちらのパラメータはdatabaseごとに指定する照合順序です。デフォルトは、None
です。
--db_pool_min
データベースのコネクションプールの最小サイズを指定します。デフォルトは、1
です。
--db_pool_max
データベースのコネクションプールの最大サイズを指定します。デフォルトは、10
です。低めの設定数となっているため、多重アクセス数に応じて適正な値を設定してください。また、データベース側でも設定数を満たす同時コネクション数を受け付ける設定になっているかを確認してください。
--db_failover_wait_retry_count
データベースのフェイルオーバタイムアウトを待ち合わせるリトライ回数を指定します。デフォルトは、12
です。
--db_failover_wait_retry_interval
データベースのフェイルオーバタイムアウトを待ち合わせるリトライ間隔を指定します。デフォルトは、5
です。
--db_pool_recycle
無通信状態のデータベース接続を解放するまでの時間を指定します。デフォルトは、30
秒です。
Keystone
Keystoneのチューニングパラメータは全てのメタマイクロサービスに共通して存在します。
もし全てのサービスに適用したい場合は、それぞれに対して明示的に指定する必要があります。
--keystone_userid
デフォルトのkeystoneユーザIDを指定します。デフォルトは、None
です。
--keystone_username
デフォルトのkeystoneユーザ名を指定します。デフォルトは、None
です。
--keystone_password
デフォルトのkeystoneユーザパスワードを指定します。デフォルトは、None
です。
--keystone_domain_id
デフォルトのkeystoneユーザドメインIDを指定します。デフォルトは、default
です。
--keystone_domain_name
デフォルトのkeystoneユーザドメイン名を指定します。デフォルトは、Default
です。
--keystone_project_id
デフォルトのkeystoneユーザプロジェクトIDを指定します。デフォルトは、None
です。
--keystone_project_name
デフォルトのkeystoneユーザプロジェクト名を指定します。デフォルトは、None
です。
Schedule
--minimum_life_term
Scheduleサーバのterm型のWebフック予約の最小時間幅を指定します。デフォルトは、3
分です。
--preset_execution_time
Scheduleサーバが予約実行タイマーを準備する時間を指定します。デフォルトは、5
分です。これは予約実行時刻の5
分前にデータベースから予約情報がロードされ、メモリ上に実行タイマーを形成するという意味です。
--execution_guard_time
Scheduleサーバが予約変更を受け付け可能なガード時間を指定します。デフォルトは、30
秒です。予約実行時刻の30秒前までは変更を受け付けます。
--execution_delay_guard_time
Scheduleサーバの予約実行遅延保護時間を指定します。デフォルトは、60
分です。予約実行時刻の前後の実行遅延保護時間内に同一リソースに対する予約は存在できません。
--birth_delay_limit_time
Scheduleサーバの予約実行開始遅延の猶予時間を指定します。デフォルトは、3
分です。予約実行時刻を3
分経過しても開始されない場合は開始失敗状態に遷移します。
--death_retry_interval
Scheduleサーバのterm型予約における終了予約の実行リトライ間隔を指定します。デフォルトは、1
分です。
--schedule_history_duration_days
Scheduleサーバの予約実行履歴の保持期間を指定します。デフォルトは、1
日です。
--timedout_queue_max_size
Scheduleサーバの予約実行が発火すると予約アクション実行待ちキューにエントリされますが、この実行待ちキューの最大長を指定します。デフォルトは、256
です。
--booking_plan_watch_interval
Scheduleサーバの予約実行計画の処理間隔を指定します。デフォルトは、10000
msecです。10000
msec間隔で予約情報をサーチして、preset_execution_time
にマッチするものを実行タイマーにセットします。
Lambda
--master_consume
Lambda、Collector、Reflectorで稼働する各種コンシューマをマスターノードでも稼働させるかを指定します。デフォルトは、True
です。
--event_queue_max_size
Lambdaのイベントキュー最大サイズを指定します。デフォルトは、4096
です。
--lambda_chain_watch_inteval
Lambdaのイベントチェインの生存可能期限を監視する監視する間隔を指定します。デフォルトは、180
秒です。
--ssh_default_timeout
Lambdaや組込関数で利用できるSSHプロトコルのデフォルトタイムアウトを指定します。デフォルトは、60
秒です。
--lambda_queue_bulk_size
Lambdaイベントコンシューマがイベントキューから一括読み取りするサイズを指定します。デフォルトは、32
です。
Collector
--consume_delegate
Collectorの収集ターゲット情報のキューからの読み取りを外部のプログラムに委譲するモードです。デフォルトは、False
です。True
に設定した場合、収集ターゲットのキューエントリはCollectorが実施しますが、キューからの収集ターゲットの刈り取り及び収集、収集データのキューイングが外部のプログラムで実行しなければなりません。
--collection_trigger_inteval
Collectorの収集ターゲット情報の決定周期を指定します。デフォルトは、60
秒です。
--collection_bulk_size
Collectorの収集ターゲット情報の一括読み取りサイズを指定します。デフォルトは、128
です。
--snmp_default_timeout
SNMPのデフォルトタイムアウトを指定します。デフォルトは、5
秒です。
--snmp_default_retries
SNMPのデフォルトリトライ回数を指定します。デフォルトは、3
回です。
--collector_job_queue_max_size
Collectorの収集ターゲット情報のキューイング最大サイズを指定します。デフォルトは、3000
です。これはデフォルトでは、60
秒間で3000
台の機器への収集を最大スケールの設定となっていることを意味します。
--collector_data_queue_max_size
Collectorが収集したデータをキューイングする最大サイズを指定します。デフォルトは、65535
です。
--default_max_repetitions
SNMPのBULK-GETのデフォルトmaxRepetitionsを指定します。デフォルトは、64
です。
Reflector
--reflection_bulk_size
Reflectorの収集データを一括読み取りサイズを指定します。デフォルトは、48
です。
--metrics_server_type
Reflectorのメトリック転送先のサーバタイプを指定します。デフォルトは、zabbix
です。現在は、zabbix
のみサポートしています。
--metrics_server_endpoints
Reflectorのメトリック転送先のサーバエンドポイントを指定します。デフォルトは、None
です。カンマ区切りで複数指定することができます。
--metrics_server_connect_timeout
Reflectorのメトリック転送先のサーバ接続タイムアウトを指定します。デフォルトは、3
秒です。
--metrics_send_bulk_size
Reflectorのメトリック転送時に一括転送するデータ件数を指定します。デフォルトは、1024
です。
--metrics_send_retry_interval
Reflectorのメトリック転送のリトライ間隔を指定します。デフォルトは、1
秒です。
--metrics_send_retry_count
Reflectorのメトリック転送のリトライ回数を指定します。デフォルトは、3
です。
--metrics_send_unit
Reflectorのメトリック一括転送の単位を指定します。デフォルトは、None
です。host
単位とkey
単位が選択できます。
--metrics_send_queue_max_size
Reflectorのメトリック転送キューの最大サイズを指定します。デフォルトは、65535
です。
--metrics_sent_expire_days
Reflectorの送信済データの履歴保持期間を指定します。デフォルトは、1
日です。
--metrics_sent_backup_mode
Reflectorの送信済データをデータベースに履歴保持するかを指定します。デフォルトは、False
です。
--metrics_sent_queue_max_size
Reflectorの送信済データのキューイング最大サイズを指定します。デフォルトは、65535
です。
--metrics_unsent_expire_days
Reflectorの未送信データの履歴保持期間を指定します。デフォルトは、1
日です。
--metrics_unsent_backup_mode
Reflectorの未送信データをデータベースに履歴保持するかを指定します。デフォルトは、True
です。
--metrics_unsent_queue_max_size
Reflectorの未送信データのキューイング最大サイズを指定します。デフォルトは、65535
です。
--metrics_resend_queue_max_size
Reflectorの再送信データのキューイング最大サイズを指定します。デフォルトは、65535
です。
--collection_sniffer_mode
Reflectorが刈り取った収集データをスニファーするモードを指定します。デフォルトは、False
です。
--collection_sniffer_bulk_size
Reflectorがスニファーしたデータキューから一括で読み取るサイズを指定します。デフォルトは、256
です。
--collection_sniffer_queue_max_size
Reflectorがスニファーしたデータをキューイングする最大サイズを指定します。デフォルトは、65535
です。
--worker_watch_interval
Workerの状態監視間隔を指定します。デフォルトは、10000
msecです。