Bảo vệ Magento trước các tình huống giao thông cao


0

Xin chào, tôi có một máy chủ apache 2.2 với các tập lệnh php (magento).

trong thời gian bình thường, một trang php hiển thị trong 1-2 giây, điều đó là ổn.

Đôi khi, ở lưu lượng truy cập cao hoặc các bot nhện thô, tất cả các Apache-Slots đều bị chặn.

Các yêu cầu duy nhất chạy rất chậm và sử dụng bộ nhớ ngày càng nhiều hơn cho đến khi mysql gọi oom-killer, giết chết tomcat cần thiết của tôi.

Đầu tiên tôi đã thử mod_evasive. Nhưng nếu tôi định cấu hình nó quá nghiêm ngặt, tôi không thể duyệt nhanh, nếu tôi định cấu hình quá lỏng, các yêu cầu có thể đến nhanh hơn thì chúng có thể được xử lý.

Vấn đề là các tập tin php. Các tài nguyên khác như hình ảnh, vv sẽ không cản trở các vị trí.

Thứ hai tôi đã cố gắng hạn chế nó bằng cách hạ thấp MaxClents. Nhưng bây giờ một khách hàng có thể cản trở tất cả các vị trí.

Mọi ý tưởng làm thế nào để giới hạn kết nối tối đa trên mỗi máy khách hoặc tốt hơn các tập lệnh php simultan tối đa trên mỗi ip ...

Các máy khách Apache khác được cấu hình như thế nào để tránh nhiều yêu cầu hơn mức chúng có thể xử lý mà không ưu tiên bất kỳ máy khách nào?


1-2 giây để hiển thị một trang chắc chắn là không ổn.
ceejayoz

@ceejayoz, 1-2 giây là được. Phụ thuộc vào ứng dụng của bạn đang làm gì và ứng dụng khách nào đang sử dụng trình duyệt.
HTTP500

1
wutzebaer: có cơ hội tiếp cận bạn thông qua hỗ trợ được cung cấp @ - email trên trang web của bạn không? Tôi cũng đang ở Đức.
anh chàng đó từ đằng kia

Câu trả lời:


3

Đặt trang web của bạn đằng sau một CDN kéo xuất xứ ( Cloudflare lò xo để tâm như một tùy chọn, có những lựa chọn khác.)

trong thời gian bình thường, một trang php hiển thị trong 1-2 giây, điều đó là ổn.

Không, không phải vậy.

Tối ưu hóa mã của bạn để không mất đến hai giây để tạo trang.

Sau đó lưu trữ tất cả mọi thứ.

  • Yêu cầu trang bộ nhớ cache với Varnish
  • Tra cứu cơ sở dữ liệu bộ nhớ cache với Memcached.
  • Hình ảnh bộ nhớ cache trên CDN.
  • Bộ nhớ cache cấp PHP với APC hoặc eAccelerator (hoặc bộ đệm opcode tương tự)
  • Cache toàn bộ trang trên CDN, cho vấn đề đó.

Nếu bạn chưa có, hãy quay máy chủ cơ sở dữ liệu của bạn vào một máy chủ riêng biệt, cung cấp cho nó một khối lượng bộ nhớ và các đĩa nhanh, sau đó xóa bộ nhớ cache khỏi các bảng của bạn. Magento là một con đĩ khi tham gia và vân vân, vì vậy bạn sẽ cần máy chủ cơ sở dữ liệu của mình nhanh chóng.

Vì vậy, khi người dùng xem trang web của bạn, nội dung sẽ được lấy ra khỏi bộ đệm ở đâu đó và không phải tạo ra mỗi lần.


Tôi đã tự do chạy Yslow đối với trang web của bạn. Đây là một bản tóm tắt các phát hiện (mặc dù, bạn nên tự làm điều này ..)

  1. Thực hiện ít yêu cầu HTTP hơn. Về cơ bản, bạn nên kết hợp các tệp javascript và CSS của mình thành một, để bạn giảm chi phí phải thực hiện nhiều yêu cầu.
  2. Sử dụng Mạng phân phối nội dung (CDN). Tôi đã nói điều này ^^ ở trên ^^, nhưng Yslow nói với tôi rằng có 60 thành phần tĩnh không có trên CDN. 1,4 MB trong số này đến từ www.brainyoo.de. Điều này đưa tôi đến ..
  3. Di chuyển tài sản sang nhiều miền không có cookie. 60 tài sản đang được tải từ cùng một tên miền với phần còn lại của trang web. Điều đó có nghĩa là trình duyệt phải đợi từng người tải trước khi tải phần tiếp theo. Một cách phổ biến để giải quyết vấn đề này là đặt các tài sản tĩnh trên các miền riêng biệt, không có cookie (để yêu cầu nhỏ hơn, nhanh hơn và không chứa thông tin cookie).
  4. Di chuyển Javascript xuống dưới cùng của tài liệu. Được coi là thực hành tốt nhất cho các trang web nhanh, có thể mở rộng.
  5. Giảm thiểu Javascript và CSS. Nghiêm túc. Bạn đang gửi gần một megabyte JS và CSS, có thể được thu nhỏ và ...
  6. Nén các thành phần với Gzip. Có 39 thành phần văn bản đơn giản có thể được nén.
  7. Thêm tiêu đề Hết hạn. Có 63 tệp tĩnh không có ngày hết hạn trong tương lai, vì vậy chúng không được trình duyệt lưu trữ hiệu quả.

Tổng YSlow Lớp D. Tôi bắt đầu tự hỏi liệu các vấn đề của bạn không hoàn toàn thuộc về phía máy chủ, nhưng có thể làm gì với một vấn đề tốt không đáng có và nâng xếp hạng YSlow của bạn lên. Bởi vì theo cách đó, a) ít lưu lượng truy cập được phục vụ từ máy chủ Apache của bạn. b) Tải nhanh hơn, vì vậy khách truy cập của bạn không khóa quy trình Apache trong bao lâu.


bạn có thể chỉ cho tôi bất kỳ cửa hàng magento nào nhanh hơn nhiều không?
wutzebaer

@wutzebaer flor.com tạo ra một trang tốt trong một giây.
ceejayoz

1
made.com là một trang Magento, và được điều chỉnh tốt.
Tom O'Connor

trang của tôi là brainyoo.de/shop html thuần túy dường như hiển thị trong 500ms, điều này có ổn không?
wutzebaer

tuy nhiên, trang của tôi nhanh đến mức nào, đôi khi nó không thể xử lý các yêu cầu, vậy có câu trả lời cho câu hỏi của tôi không?
wutzebaer

1

nói chung, nếu magento chạy chậm hoặc giết chết máy chủ của bạn mọi lúc, thì máy chủ của bạn sẽ chạy tốt hơn với nhiều ram / cpu-power hơn. bạn có thể điều chỉnh máy chủ của mình để chạy magento một cách trơn tru, nhưng phải mất một thời gian và b) tài nguyên cần thiết (phía máy chủ).

bạn đã làm bao nhiêu db-điều chỉnh? magento là PITA nhưng có thể được cấu hình để nhanh, được cung cấp đủ RAM.

sử dụng một công cụ như mysql_tuner hoặc mysql điều chỉnh primer để điều chỉnh db của bạn.

và sử dụng càng nhiều bộ nhớ cache càng tốt. tôi không nhớ, nếu APC được hỗ trợ; memcache là tốt hơn.

bạn cũng nên để mắt đến IOWAIT, đây là một gợi ý cho hd rất tệ - hiệu suất có thể có những lý do khác nhau.


BIÊN TẬP:

Các máy khách Apache khác được cấu hình như thế nào để tránh nhiều yêu cầu hơn mức chúng có thể xử lý mà không ưu tiên bất kỳ máy khách nào? / Tôi muốn biết làm thế nào các apaches khác xử lý tình huống khi họ nhận được nhiều yêu cầu hơn mức họ có thể xử lý

thông thường bạn sẽ mở rộng quy mô thiết lập của mình, tùy thuộc vào lưu lượng dự kiến. nếu máy chủ của bạn gặp sự cố khi trình thu thập dữ liệu & trình thu thập dữ liệu tấn công, thì bạn có một số tập lệnh hoạt động rất tệ hoặc máy chủ của bạn sẽ nhỏ.

Khi tôi mong đợi 1000 người dùng trên máy chủ của mình, tôi sử dụng một máy chủ có thể xử lý 5000 máy khách (và tôi theo dõi lỗi.log cho max_clents đạt được)

có thể giới hạn tỷ lệ, nhưng bạn sẽ có trải nghiệm tương tự như với mod_evasive. nó thực sự có ích trong thuật ngữ như DDOS, nhưng KHÔNG nếu bạn cần điều chỉnh thiết lập của mình.


xin chào tôi đã sử dụng apc và tôi biết rằng tôi sẽ có được hiệu suất cao hơn, nhưng đây không phải là câu trả lời cho câu hỏi của tôi. Tôi muốn biết làm thế nào các apaches khác xử lý tình huống khi họ nhận được nhiều yêu cầu hơn mức họ có thể xử lý
wutzebaer

những gì bạn nói "Vấn đề là các tập tin php" là không chính xác. php thường không phải là một vấn đề, với magento, nhưng hiệu năng db. hiệu suất tốt hơn có nghĩa là trang web của bạn có thể xử lý nhiều yêu cầu hơn cùng một lúc. bạn có được hiệu suất tốt hơn với điều chỉnh và nhiều tài nguyên hơn. phần còn lại, hãy xem bản chỉnh sửa của tôi
anh chàng đó từ đó

wutzebaer, bạn có bao nhiêu ram trên máy chủ của bạn?
anh chàng đó từ đằng kia
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.