Tôi đang phát triển một máy chủ trong C#. Máy chủ này sẽ hoạt động như một máy chủ dữ liệu cho một dịch vụ sao lưu: một khách hàng sẽ gửi dữ liệu, nhiều dữ liệu, liên tục, cụ thể sẽ gửi các tệp dữ liệu, tối đa năm, trong cùng một kênh tcp. Tôi sẽ gửi dữ liệu đến máy chủ chậm, tôi không muốn giết băng thông của khách hàng, vì vậy tôi không cần phải tăng tốc độ gửi dữ liệu tối đa và vì lý do này, tôi có thể sử dụng một kênh tcp duy nhất cho mọi thứ.Socket.BeginĐánh giá hiệu suất trên Mono
Nói điều này, trên thực tế máy chủ sử dụng phương pháp BeginReceive để lấy dữ liệu từ máy khách và trên cửa sổ, điều này có nghĩa là IOCP. Câu hỏi của tôi là: cách BeginReceive sẽ thực hiện trên linux/freebsd trough mono? Trên cửa sổ, tôi đã đọc rất nhiều thứ, sẽ thực hiện rất tốt nhưng phần mềm này, phần máy chủ, sẽ chạy trên linux hoặc freebsd máng mono và tôi không biết làm thế nào các phương pháp này được thực hiện trên đó!
Thêm, để cố gắng giảm phân bổ tiếp tục của đối tượng Async State cho phương thức Receive (Bắt đầu | Kết thúc) i mantain cho kết nối tcp và gọi lại BeginReceive, tôi sao chép dữ liệu trước khi sử dụng lại (tự nhiên i don ' t rõ ràng dữ liệu trong vì tôi biết có bao nhiêu đọc giá trị trả về của EndReceive). Bộ đệm được thiết lập trên 8kb vì vậy tôi sẽ ở bản sao tối đa ra 8kb dữ liệu, nó không nên giết resoruces.
Mục tiêu của tôi là nhận tối đa 400/500 kết nối ở mức tối đa. Nó không phải là quá nhiều, nhưng máy chủ (máy), trong khi chờ đợi, sẽ xử lý các tập tin máng một hệ thống tập tin riêng (được phát triển bằng cách sử dụng cầu chì đầu tiên trong C# và sau đó trong C) trên LVM + Linux Software Raid Mirror và kiểm tra chống vi-rút bằng clamav phần mềm phải nhẹ nhất có thể!
EDIT: Tôi quên nói rằng máy sẽ là (có thể) Intel Core 2 Duo 2.66+ GHz (3 MB L2 - FSB 1066 MHz) với 2 GB ram và SO sử dụng 64 bit.
Mono có sử dụng epoll (libevent) hoặc kqueue (trên freebsd) không? Và tôi nên làm một cái gì đó cụ thể để cố gắng tối đa hóa buổi biểu diễn? Tôi có thể làm gì đó hơn để không giết tài nguyên nhận gói dữ liệu không?
Chào mừng đến với cộng đồng! – JoshJordan