0
Amazon KinesisFireHoseClientを使用してkinesisにレコードを置くと、負荷が高いときにWebサイトがクラッシュする。Amazon Kinesis Clientを使用しているときに高負荷時にWebサイトがクラッシュし、開いている接続数で問題が発生する
例外が記録されているだけで、何らかの死亡が発生し、アプリケーションを再起動する必要があります。クラッシュした後で動作することがあります。
私はそれが開いている接続の数と関係があることを知っていますが、私はそれを修正する方法は考えていません。
これは私がシングルトン
public class KinesisFirehoseLogger<T>
{
private string streamName;
private AmazonKinesisFirehoseClient client;
protected ILogger logger;
public KinesisFirehoseLogger(IKinesisLogConfig config, ILogger logger)
{
this.streamName = config.StreamName;
this.logger = logger;
this.PartitionKey = config.PartitionKey;
AWSCredentials credentials = new BasicAWSCredentials(config.AccessKey, config.SecretKey);
this.client = new AmazonKinesisFirehoseClient(credentials, config.Region);
}
public async Task<bool> WriteToKinesisAsync(T logObject)
{
using (var ms = new MemoryStream(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(logObject) + "\n")))
{
PutRecordRequest putRecordRequest = new PutRecordRequest() { DeliveryStreamName = this.streamName, Record = new Record() { Data = ms } };
// Put record into the DeliveryStream
return (await client.PutRecordAsync(putRecordRequest)).HttpStatusCode == HttpStatusCode.OK;
}
}
}
としてインスタンス化し、私のロガーである私は、どこかAmazonKinesisFirehoseClientの処分()メソッドを使用することになっているだろうか?どのように呼び出すべきかをどのように知っていますか?