チューニングパラメータ

本付録では、Qmonus SDKの起動パラメータにおけるチューニング可能項目を説明します。


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通信におけるメッセージ最大サイズを指定します。デフォルトは、10Mbytesです。

--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です。
gitflowgitlabflowqmonusflowが選択できます。

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

ハートビート間隔を指定します。デフォルトは、15000msecです。

--code_style

プラグインのpythonコードフォーマットの設定ファイルを指定します。デフォルトは、Noneです。
pep8, pycodestyle, flake8などのセクションを記述した.pep8.flake8tox.inisetup.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_modeTrueの場合は、FrontalでリアルタイムにHTTP通信をモニタリングできます。システムの負荷を低減したい場合はFalseにすることでトレースを抑制できます。 deep_monitoringTrueの場合は、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_modeTrueに設定することを推奨しています。さらに、通信不可を軽減したい場合は、ScenarioTransactionサーバを同居させて稼働することも可能です。この場合、双方の間での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

データベース製品を指定します。mysqlpostgresqlsqliteが選択できます。デフォルトは、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サーバの予約実行計画の処理間隔を指定します。デフォルトは、10000msecです。10000msec間隔で予約情報をサーチして、preset_execution_timeにマッチするものを実行タイマーにセットします。

--execution_retry_codes

エラー時にリトライするステータスコードを指定します。デフォルトは、500, 502, 503, 504, 599です。

--execution_retry

エラー時にリトライを実行するかどうかを指定します。デフォルトは、Trueです。


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の状態監視間隔を指定します。デフォルトは、10000msecです。