概要
本記事では、生成系AIが作成した Kafka へのデータ送信(Produce)プログラムを実行した際、必要な設定項目が不足していたために処理時間が極端に長くなってしまう事象と、その対応方法を共有します。
不足していた設定として security.protocol
および sasl.mechanisms
を追記することで、想定通りの高速な処理が可能となりました。
"security.protocol": "SASL_SSL",
"sasl.mechanisms": "PLAIN",
本記事は、以下のシリーズの一部です。
引用元:Data in Motion 実現へ:Data Streaming Platform である Confluent の全貌 #Kafka - Qiita
発生事象
事象の背景
生成AIを用いてKafkaにデータを書き込むコードを生成する場合、しばしば OSS の Kafka 向けコードが生成されることがあります。この場合、Confluent 環境に必要な認証情報が設定されていないサンプルコードが出力されてしまいます。以下は不足設定例で、sasl.username
や sasl.password
を含む認証情報、そして security.protocol
/ sasl.mechanisms
が抜け落ちています。
# Kafkaプロデューサーの設定例(不足)
conf = {
'bootstrap.servers': 'your_broker_address:9092',
'client.id': 'python-producer'
}
発生した問題
認証情報が設定されていない状態で、sasl.username
と sasl.password
のみを追加してプログラムを実行したところ、通常であれば 1秒未満で完了する処理が、1分以上、場合によっては5分程度もかかる現象が発生しました。以下の例では 1 分程度となっていますが、さらに時間がかかるケースも確認されています。
'sasl.username': sasl_username,
'sasl.password': sasl_password,
対応方法
今回の事象は、Kafka クラスターへの認証設定が不完全であったことが原因と考えられます。認証を正しく行うためには以下の設定が必要でした。security.protocol
と sasl.mechanisms
を追加したところ、1 秒未満で処理が完了するようになりました。
'sasl.username': sasl_username,
'sasl.password': sasl_password,
'security.protocol': 'SASL_SSL',
'sasl.mechanisms': 'PLAIN',
これらの設定値を追加することで、Confluent環境での Kafka へのデータ書き込みが意図したパフォーマンスで実行可能になります。