2012-06-05 3 views
4

Я использую этот скрипт с PHP5-CLI для загрузки файла с Amazon S3 в экземпляр EC2, но он довольно медленный (1 минута для 160 МБ, около 2 МБ/с). Предположительно должно быть возможно не менее 10 МБ/с. Я что-то делаю в коде?Медленный S3 -> Передача EC2. Неверный код?

require 'aws-sdk/sdk.class.php'; 

$s3 = new AmazonS3(array(
     'key' => '********', 
     'secret' => '******************' 
)); 
$s3->get_object('mahbucket', 'filename.tar.gz', array('fileDownload' => 'downloaded.tar.gz')); 

Ковш в eu-west-1 и экземпляр в eu-west-1a

(Cross posted to AWS forums)

ответ

2

Ваш сценарий выглядит хорошо, но я столкнулся с подобными проблемами некоторое время назад, что я не был в недееспособных fix ...

Мой новый подход использует s3cmd для передачи файлов между ведрами S3 и моими экземплярами EC2. Вам просто нужно настроить его один раз, а затем вы можете запустить его через PHP. Это также более безопасно, потому что вам не нужно хранить свои учетные данные AWS внутри вашего скрипта.

На мой взгляд, скорость в порядке:

[email protected]:~/s3# s3cmd put test.bin s3://data.example.com/test.bin 

test.bin -> s3://data.example.com/test.bin [part 1 of 13, 15MB] 
15728640 of 15728640 100% in 0s 16.39 MB/s done 
test.bin -> s3://data.example.com/test.bin [part 2 of 13, 15MB] 
15728640 of 15728640 100% in 0s 15.55 MB/s done 
test.bin -> s3://data.example.com/test.bin [part 3 of 13, 15MB] 
15728640 of 15728640 100% in 0s 16.18 MB/s done 
test.bin -> s3://data.example.com/test.bin [part 4 of 13, 15MB] 
15728640 of 15728640 100% in 0s 17.32 MB/s done 
test.bin -> s3://data.example.com/test.bin [part 5 of 13, 15MB] 
15728640 of 15728640 100% in 0s 18.87 MB/s done 
test.bin -> s3://data.example.com/test.bin [part 6 of 13, 15MB] 
15728640 of 15728640 100% in 0s 16.58 MB/s done 
test.bin -> s3://data.example.com/test.bin [part 7 of 13, 15MB] 
15728640 of 15728640 100% in 0s 16.29 MB/s done 
test.bin -> s3://data.example.com/test.bin [part 8 of 13, 15MB] 
15728640 of 15728640 100% in 0s 16.95 MB/s done 
test.bin -> s3://data.example.com/test.bin [part 9 of 13, 15MB] 
15728640 of 15728640 100% in 0s 15.33 MB/s done 
test.bin -> s3://data.example.com/test.bin [part 10 of 13, 15MB] 
15728640 of 15728640 100% in 0s 17.01 MB/s done 
test.bin -> s3://data.example.com/test.bin [part 11 of 13, 15MB] 
15728640 of 15728640 100% in 0s 15.36 MB/s done 
test.bin -> s3://data.example.com/test.bin [part 12 of 13, 15MB] 
15728640 of 15728640 100% in 0s 16.56 MB/s done 
test.bin -> s3://data.example.com/test.bin [part 13 of 13, 10MB] 
11256320 of 11256320 100% in 0s 14.15 MB/s done 

[email protected]:~/s3# s3cmd get s3://data.example.com/test.bin test.bin.new 
s3://data.example.com/test.bin -> test.bin.new [1 of 1] 
200000000 of 200000000 100% in 11s 16.20 MB/s done 

Может быть, эта статья интересна, так: Network performance within Amazon EC2 and to Amazon S3

+0

На самом деле я только что сделал этот сценарий, чтобы иметь возможность использовать его с Баш, так будет казаться s3cmd для меня совершенно не нужен PHP. Я проверю это. –

+0

Я использую s3cmd сейчас, и это намного быстрее, около 10 МБ/с. Либо это просто быстрее сегодня, либо PHP SDK работает медленнее (возможно, привязана к процессору, поскольку экземпляр является небольшим), но по какой-то причине кажется, что эта проблема решена. –

+0

Рад это услышать :-) – dom