低確率でタイムアウトが発生する
hirokoma opened this issue · comments
お世話になっております。
@geolonia/normalize-japanese-addresses
のバージョン 1.1.0 をAWS Lambdaで運用しているのですが、1日あたり1000〜2000程度のリクエストのうち数%のリクエストでタイムアウト発生していることが判明しました。
Lambdaで運用しているソースコードは以下の通りです。
const { normalize } = require('@geolonia/normalize-japanese-addresses')
exports.lambdaHandler = async (event) => {
const request_body = JSON.parse(event.body);
const result = await normalize(request_body.text);
console.log(request_body);
console.log("住所正規化結果");
console.log(result);
let response = {
statusCode: 200,
headers: {
"x-custom-header": "my custom header value"
},
body: JSON.stringify(result),
};
return response;
}
貴社でもLambdaで運用されているとのことでしたが、同様の現象は起きていらっしゃいますでしょうか。
ご報告ありがとうございました。
Lambda関数の nodejs バージョン、タイムアウト設定、メモリ設定を教えていただけると助かります。また、失敗したリクエストのログ1つか2つぐらいあれば助かります。
@miya0001 さま、@keichan34さま、ご返答いただきまして誠にありがとうございます。
以降、@hirokoma に変わりまして、私@ekurericeが対応いたします。
Lambdaの環境情報、およびログ情報についてでございますが、以下のようになっております。
ログ情報ですが、失敗時のログと、同住所で再度正規化をやり直したときのログ(成功パターン)を掲載致しております。
注意事項といたしまして、@hirokomaより共有したLambdaハンドラーについて、ログ出力の部分を若干修正しております。
この修正により、正規化処理の成功可否に関わらず、インプットの住所を必ず出力するようになっております。
■Lambda関数の nodejs バージョン
amazon/aws-lambda-nodejs:14
■タイムアウト設定
0分30秒
■メモリ設定
128MB
■失敗したリクエストのログ
REPORT RequestId: 9ab0b4bb-5411-40bb-bcff-6aee7a5bc5f1 Duration: 2354.46 ms Billed Duration: 2355 ms Memory Size: 128 MB Max Memory Used: 128 MB
START RequestId: c9d9f685-3ffc-49ec-8b7e-2a489ce4946c Version: $LATEST
2021-07-16T03:58:38.517Z c9d9f685-3ffc-49ec-8b7e-2a489ce4946c INFO { text: '和歌山県和歌山市湊本町3丁目3番地' }
END RequestId: c9d9f685-3ffc-49ec-8b7e-2a489ce4946c
REPORT RequestId: c9d9f685-3ffc-49ec-8b7e-2a489ce4946c Duration: 32031.12 ms Billed Duration: 30000 ms Memory Size: 128 MB Max Memory Used: 128 MB
2021-07-16T03:59:10.367Z c9d9f685-3ffc-49ec-8b7e-2a489ce4946c Task timed out after 32.03 seconds
■上記と同じ住所で、正規化処理を追試した結果(成功パターン)
START RequestId: d5b69f1e-49c5-4664-92c5-924980422b2f Version: $LATEST
2021-07-16T03:59:07.780Z d5b69f1e-49c5-4664-92c5-924980422b2f INFO { text: '和歌山県和歌山市湊本町3丁目3番地' }
2021-07-16T03:59:07.820Z d5b69f1e-49c5-4664-92c5-924980422b2f INFO 住所正規化結果
2021-07-16T03:59:07.820Z d5b69f1e-49c5-4664-92c5-924980422b2f INFO { pref: '和歌山県', city: '和歌山市', town: '湊本町三丁目', addr: '3', level: 3 }
END RequestId: d5b69f1e-49c5-4664-92c5-924980422b2f
REPORT RequestId: d5b69f1e-49c5-4664-92c5-924980422b2f Duration: 299.37 ms Billed Duration: 300 ms Memory Size: 128 MB Max Memory Used: 128 MB
■<参考>修正後のLambdaハンドラー
exports.lambdaHandler = async (event) => {
const request_body = JSON.parse(event.body);
console.log(request_body);
const result = await normalize(request_body.text);
console.log("住所正規化結果");
console.log(result);
let response = {
statusCode: 200,
headers: {
"x-custom-header": "my custom header value"
},
body: JSON.stringify(result),
};
return response;
}
詳細にありがとうございました。
Memory Size: 128 MB Max Memory Used: 128 MB
なので、おそらくメモリがいっぱいになっていますね。。 normalize-japanese-addresses は様々な情報をキャッシュしており、128MBが正直厳しいと思います。。弊社で normalize-japanese-addresses を利用しているサービスの場合はだいたい 120MB - 250MB を使用しているので、256MBや512MBに設定することをおすすめします。
@keichan34
ご連絡いただきましてありがとうございます。
なので、おそらくメモリがいっぱいになっていますね。。 normalize-japanese-addresses は様々な情報をキャッシュしており、128MBが正直厳しいと思います。。弊社で normalize-japanese-addresses を利用しているサービスの場合はだいたい 120MB - 250MB を使用しているので、256MBや512MBに設定することをおすすめします。
承知いたしました、メモリを増加させようと思います。
ご助言いただきましてありがとうございました。