2010-11-17 38 views
7

Tốc độ tải lên SCP dường như bị hạn chế rất nhiều trong thư viện từ tiện ích dòng lệnh scp có khả năng. Tôi hiểu đây là Ruby (1.9.2-p0), nhưng Net :: SCP là khoảng 8x chậm hơn so với tiện ích Linux (nhìn thấy bằng cách sử dụng các tập tin lớn ... xem bên dưới). Tôi tò mò muốn biết (Tôi đã xem nhanh mã) nếu đây là ổ cắm trong Ruby, hoặc nếu có thể ghép các ổ cắm Net :: SCP tốt hơn?Các vấn đề về hiệu suất với Ruby và Net :: Chuyển SCP (ổ cắm)

Tôi nhận thấy rằng không có vấn đề gì kiểu tải lên tôi đã thử (tải lên nối tiếp, kênh hoạt động không đồng bộ, sử dụng nhiều phiên bản của đối tượng scp) Tôi không bao giờ có thể đạt tốc độ truyền tải trên 9 megabyte/giây khi tải lên SCP. Bây giờ ... hãy để tôi giải thích các chi tiết của cuộc điều tra của tôi:

1) Cố gắng Encryption Algorithms khác nhau

tôi đã sử dụng các loại khác nhau của mã hóa mà không có nhiều ý nghĩa Ví dụ thay đổi tốc độ: Tôi có thể nộp hồ sơ kiểm tra 1GB của tôi sử dụng dòng lệnh scp (thuật toán mã hóa = arcfour128) và nhận được tốc độ truyền 73,3 megabyte/s trên kết nối gigabit nội bộ của tôi. Tôi không bao giờ có nhiều hơn khoảng 9 megabyte/s trên kết nối gigabit nội bộ của tôi bằng cách sử dụng Net :: SCP.upload lib.

2) Cố gắng Hosts khác nhau/hệ điều hành

tôi thấy rằng Linux -> Linux cập nhật là nhanh nhất. Máy chủ ssh của SUA (Windows) chỉ có thể cung cấp cho tôi tốc độ tải lên tối đa 13,5megabyte/giây (Linux -> Windows, sử dụng thuật toán arcfour w/scp command line), trong khi Linux -> Linux (sử dụng dòng lệnh arcfour, w/scp)) là một 73,3megabyte rực rỡ/s. Tôi nên đề cập đến rằng những Windows và Linux máy là cùng một mô hình chính xác, phần cứng, vv

3) Cố gắng phương pháp SCP upload khác nhau

-> sử dụng 2 upload đồng bộ! cuộc gọi, sau khi người kia đã hoàn thành. -> đã sử dụng 2 cuộc gọi tải lên không đồng bộ, sau khi cuộc gọi khác bắt đầu -> đã sử dụng 2 đối tượng SCP Net và đã tải tệp lên phiên bản tải lên không đồng bộ/không đồng bộ (do đó chúng chạy song song) Không có phương pháp nào khác cung cấp cho bất kỳ hiệu suất đáng kể nào, đó là loại bực bội.

Đây là kết quả của bài kiểm tra (văn bản tăng cường cho khả năng đọc, nhưng tương tự như đầu ra của mã được cung cấp):


Net::SCP 
Done creating channels 
Starting transfer of /home/seth/afpcases/systeme.afp # two upload! calls, one after another 
Finished transfer of /home/seth/afpcases/systeme.afp 
--> Duration: 126.07707 seconds (8.7168903909331 megabytes/s) should show transfer speed of serial uploads 

Starting transfer of /home/seth/afpcases/systeme.afp # two upload calls, one after another, with a wait on both channels after both have started 
Finished transfer of /home/seth/afpcases/systeme.afp 
--> Duration: 122.588784 seconds (8.964931082112699 megabytes/s) should show transfer speed of simultaneous async channels. 

Starting transfer of /home/seth/afpcases/systeme.afp # two upload calls on two separate Net::SCP objects, one after another, with a wait on both channels after both have started 
Finished transfer of /home/seth/afpcases/systeme.afp 
--> Duration: 122.822663 seconds (8.947860054133495 megabytes/s) should show transfer speed of simultaneous SCP instances 

Finished in 371.761262 seconds 

Nếu bạn có một tập tin lớn (tôi đã sử dụng một tập tin ~ 1GB), bạn có thể sử dụng các xét nghiệm rspec này (trong scp_spec.rb) hoặc thay đổi chúng thành bất kỳ khai thác thử nghiệm nào mà bạn quen thuộc để thấy sự suy giảm hiệu năng này.

Nếu bạn không biết hiệu suất này có thể được cải thiện như thế nào trong thư viện, bạn có thêm ý tưởng nào về cách mở thêm tốc độ truyền SCP bổ sung song song chỉ cần gọi tiện ích scp qua một vỏ bọc con?

RSpec kiểm tra ở đây: https://gist.github.com/703966

Trả lời

-3

Bạn có thể thử Net-sftp để thay thế. Sftp là một giao thức mới hơn và tiện ích scp linux thực sự sử dụng giao thức sftp nếu nó có sẵn. Tôi không biết nếu net-scp thực sự sử dụng giao thức sftp, nhưng tôi sẽ không ngạc nhiên nếu nó không.

Bạn cũng có thể thử rsync, nhưng điều đó cũng sẽ yêu cầu cài đặt rsync trên máy chủ từ xa.Rsync là cho đến nay vua tốc độ với chuyển tập tin từ xa, mặc dù tôi không thể xác nhận cho đá quý sáu-rsync.

Các vấn đề liên quan