コードを使ったことがある
public static AmazonS3Client s3 = null;
...
BasicAWSCredentials c = new BasicAWSCredentials("absadgwslkjlsdjgflwa");
s3 = new AmazonS3Client(c);
数十のスレッドが s3.putObject() によって画像をアップロードする間、1 つのインスタンス s3 のみが作成されます。ダンプ情報を見ると、1 つのスレッドが唯一のインスタンス s3 をロックし、他のスレッドは待機していることがわかりました。
したがって、以下のコードを使用すると、おそらく高速になると思います。
BasicAWSCredentials c = new BasicAWSCredentials("absadgwslkjlsdjgflwa");
for(int i = 0; i < 10; i++)
amazonS3[i] = new AmazonS3Client(c);
システムがランダムな s3 インスタンスを取得し、イメージをアップロードするたびに。
private static AmazonS3 getS3(){
int i = (int)(Math.random() * 10);
return amazonS3[i];
}
しかし、システムが遅くなるようです。なぜそれが起こったのですか?おそらく唯一のインスタンス s3 がすでに接続プールを使用していますか? 私は混乱しています。