2016-12-02 16 views
1

Jetzt habe ich einen server zu media stream akzeptieren und auf mp4-dateien aufzeichnen, und auf s3 hochzuladen, wenn die nebenläufigkeit hoch ist, fand ich, dass es das s3-uploading ist, die kosten die meisten CPU, und wenn ich die IO überwachte, fand ich auch, dass die CPU-Kosten zusammen mit der IO zu s3 geändert, und die IO (out) Rate ist nicht stabil.aws s3 upload optimierung, mit java sdk

also frage ich mich, ob es eine Methode gibt, die ich verwenden kann, um die Upload-Geschwindigkeit zu s3 zu steuern? Zum Beispiel, wenn diese Sekunde die IO-Rate zu hoch ist, dann mache ich es langsamer, so dass es die gesamten Dateien unter jeder Sekunde teilen kann. Und ich frage mich auch, ob es machbar ist, die CPU-Kosten abzulehnen.

Ich wünschte, jemand kann mir helfen, danke und verzeih mir mein schlechtes Englisch.

Antwort

1

AWS S3 bietet keine Lösung zur Verlangsamung der Übertragung, die mir bekannt ist. Sie könnten jedoch versuchen, multipart uploads(中文) zu verwenden, um den Upload in mehrere gleichzeitige Streams aufzuteilen. Dadurch kann Ihr Upload besser verwaltet werden.

Beachten Sie, dass Sie diese Technik nicht für Dateien verwenden können, die kleiner als 5 MB sind, da jeder Upload-Teil mindestens 5 MB groß sein muss (mit Ausnahme des letzten Teils). Dank @ Michael - sqlbot dass zur Korrektur)

(你 的 英文 很好, 我 可以 懂 你)

+0

Sie nicht die Technik für Dateien <5 MB verwenden können. Es funktioniert, führt aber nur zu mehr Overhead, da eine Datei <5MB nur in einem Teil hochgeladen werden kann. Wo hast du 100 KB gesehen? –

+0

Sie haben Recht. Ich hatte meine Drähte irgendwie durchqueren müssen. Ich habe die Antwort aktualisiert. Vielen Dank! – otakumike

+0

Danke, ich habe es schon mal ausprobiert, aber mit dieser Methode habe ich gerade festgestellt, dass ich nicht gewürdigt werden kann, wenn die Uploads beendet sind (ich benutze S3ProgressListener, um festzustellen, ob die Uploads abgeschlossen sind, aber wenn ich mehrteilige Uploads verwende, habe ich gefunden dass das Übertragungsereignis in TRANSFER_COMPLETED_EVENT geändert wird, wenn jedes übertragene Segment abgeschlossen ist, und ich bin mir nicht sicher, wie viele Dateien insgesamt vorhanden sind. Übrigens, wie kann ich wissen, dass ich ein Chinese bin (ich nehme an, ich heiße^_^..) ? –