Tải trang Magento mất quá nhiều thời gian


10

Tôi có trang web magento. Không có bất kỳ người dùng nào (tối đa 2-3 tại một thời điểm).

Máy chủ của chúng tôi là: CPU: 2000 MHz RAM: 2048Mb HDD: 50000Mb.

Tôi đã cài đặt ZendServerCE (apc + memcached + Zend Tối ưu hóa + Zend Data Cache). Tôi đã tắt memcached, vì trang web tải kém nhất. Tôi đặt cấu trúc kiểu phẳng, dữ liệu được lưu lại và lưu trong bộ điều khiển quản trị.

Vì vậy, tôi có apc + Zend Tối ưu hóa + Zend Data Cache .

  1. Vấn đề đầu tiên là tôi đã kiểm tra thời gian chạy làm thế nào để công văn hoạt động. Cuộc gọi start_session () mất khoảng 500-700ms. Có vẻ như kết quả không tốt. Tại sao quá lâu, tôi không biết.

  2. Tôi đã đọc bài này: http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_key_buffer_size và tìm ra các tùy chọn tối ưu cho máy chủ của tôi.

Trên giờ:

Key_read_requests = 8887
Key_reads         = 252
Key_write_request = 187
Key_writes        = 146 

Bạn thấy rằng 252/8887> 0,01, nhưng không quá nhiều. Đó là giá trị tối ưu tôi từng có. Kết quả khác bắt đầu từ> 6.

Đây là my.cnf:

key_buffer              = 48M
myisam_sort_buffer      = 2M
sort_buffer             = 2M
read_buffer_size        = 2M
join_buffer             = 2M
read_rnd_buffer         = 2M
max_allowed_packet      = 128M
thread_stack            = 192K
thread_cache_size       = 16
query_cache_type        = 1
myisam-recover         = BACKUP
max_connections        = 50
table_cache            = 256
#thread_concurrency     = 10
query_cache_limit       = 8M
query_cache_size        = 98M

3. Memcached vì một số lý do không tốt. Tôi đã tắt nó đi. Nhưng bộ đệm dữ liệu zend và trình tối ưu hóa zend vẫn hoạt động.

4 . APC có vẻ đúng. Để tải hành động của bộ điều khiển mất 3-4 giây lần đầu tiên (tôi đặt die () ở đó để kiểm tra) và lần đầu tiên phải mất 1 - 1,3 giây.

5. Sau vài phút tôi đã khởi động lại mysql tôi đã có kết quả tốt. Các trang đang tải từ 1,5 đến 2,5 giây. Nhưng bây giờ (sau vài giờ) phải mất 6-10 giây. Tôi không thể tìm thấy lý do.

Vì vậy, bạn có thấy một số cấu hình không chính xác ở đây? Có thể máy chủ của tôi không phù hợp với magento?

CẬP NHẬT 1: khoảng 600 danh mục và 1000 sản phẩm hiện nay và khoảng 20000 danh mục (cho các cửa hàng web khác nhau) và 1500-3000 sản phẩm trong tương lai.

Không có nhiều thuộc tính.

CẬP NHẬT 2 Tôi đã nói rằng ssh console hoạt động quá chậm. Tôi khởi động lại máy chủ và bây giờ nó hoạt động nhanh. nó có nghĩa là tôi có vấn đề với RAM. Không có đủ không gian.

Đó là trạng thái ban đầu mà không có apache:

             total       used       free     shared    buffers     cached
Mem:          2048        600       1447

CẬP NHẬT 3 Tôi đã nhận nó. Bây giờ nó được tải trong 0,5-1,5 giây

Đây là cấu hình: mysql

[mysqld]
key_buffer_size         = 256M
tmp_table_size      = 32M
max_heap_table_size     = 32M
myisam_sort_buffer      = 4M
sort_buffer             = 4M
read_buffer_size        = 4M
join_buffer     = 4M
read_rnd_buffer     = 4M
max_allowed_packet  = 64M
thread_stack        = 192K
thread_cache_size       = 16
query_cache_type        = 1
myisam-recover          = BACKUP
max_connections         = 20
table_cache             = 1024
innodb_buffer_pool_size = 128M
query_cache_limit   = 24M
query_cache_size        = 256M

php

[apc]
apc.stat=1
apc.enabled=1
apc.optimization=0
apc.cache_by_default=1
apc.shm_segments=10
apc.shm_size=256M
apc.ttl=0
apc.user_ttl=0
apc.num_files_hint=10000
;apc.mmap_file_mask="/tmp/apc"
apc.max_file_size=5M
apc.enable_cli=1
apc.mmap_file_mask="/tmp/apc.XXXXXX"
apc.slam_defense=0
apc.user_entries_hint=10000

Tất cả đều hoạt động hoàn hảo, nhưng vẫn còn một câu hỏi. APC cho tôi thấy statisic này: nhập mô tả hình ảnh ở đây

Tại sao hit quá nhỏ? Có ý kiến ​​gì không?


Sẽ thật tuyệt nếu bạn bỏ vài dòng về cài đặt Magneto của mình (ví dụ: kích thước danh mục, sửa đổi, tiện ích mở rộng, v.v.).
dùng487772

Không có cách nào ai đó có thể chỉ cần đăng một loạt các tệp cấu hình để bạn có thể thiết lập đúng máy chủ của mình. Có hàng tá tập tin; bản sửa đổi cụ thể của phần mềm và thay đổi cấp hệ thống cần được thực hiện để tận dụng tốt nhất phần cứng có sẵn của bạn.
Ben Lessani - Sonassi

Vui lòng giải thích tại sao bạn đặt downvote
Anthony

@Tim Tôi đã cập nhật câu hỏi
Anthony

2
Tôi sẽ ghé vào xhprofvà cố gắng để có được một hình dung về những gì đang mất nhiều thời gian nhất để tải. Đây có phải là một máy chủ sản xuất đang tải hoặc chỉ để thử nghiệm?
philwinkle

Câu trả lời:


6

Vì câu hỏi dường như không phải là magento trung tâm, đây là câu trả lời không trung tâm của magento.

Bộ nhớ đệm OpCode và tối ưu hóa DB là một cách tốt để tăng tốc các ứng dụng web của bạn đến một mức độ nào đó. Nhưng lợi ích sẽ tương đối vừa phải. Để tăng tốc độ thực sự, bạn nên xem xét sử dụng bộ đệm vecni. Nó là mã nguồn mở, dễ cấu hình và dễ tích hợp với magento nhờ các mô-đun có sẵn miễn phí cho magento.

Ngoài ra còn có một bài viết hay với một cái nhìn tổng quan ngắn gọn về cách thức hoạt động của nó: http://www.fabrizio-branca.de/make-your-magento-store-fly-USE-varnish.html

Đặc biệt xem xét biểu đồ:

trang / giây


4
Varnish là tuyệt vời nếu bạn đã có một cửa hàng nhanh chóng và muốn bù đắp tài nguyên. Nhưng nó không bao giờ nên được sử dụng để che giấu thực tế là một cửa hàng chậm. Các trang vẫn phải được tạo ở vị trí đầu tiên - vì vậy chúng sẽ luôn có thời gian tải trang 6-10 giây, bất kể.
Ben Lessani - Sonassi

Có vẻ như nó giống như memcached tôi đã sử dụng trước đây. Tôi nghĩ rằng tôi đã làm sai trong các thuộc tính hoặc máy chủ của mysql quá yếu
Anthony

2

Nếu doanh nghiệp của bạn phụ thuộc vào lưu trữ của bạn hoạt động tốt, tại sao bạn lại cố gắng quản trị máy chủ mà không có kinh nghiệm.

Bạn chắc chắn sẽ có lợi chỉ bằng cách liên hệ với một máy chủ Magento chuyên nghiệp và để họ chăm sóc quản trị hệ thống, trong khi bạn làm những gì bạn giỏi, quản lý cửa hàng của bạn.

Nhìn vào thông số kỹ thuật của bạn, bạn không có đủ RAM để cố gắng chạy một cửa hàng Magento. Có rất nhiều câu hỏi tương tự như của bạn,

/server//a/400748/113375 .
/server/430565/magento-hosting-on-a-b lí


Bởi vì khách hàng của chúng tôi có ngân sách hạn chế. Tôi nên trả tiền cho máy chủ magento hơn 50 euro mỗi mounth. Chúng tôi có giới hạn cho máy chủ lưu trữ 150-200 euro mỗi năm-) Dù sao cũng cảm ơn các liên kết
Anthony

1
Sau đó, khách hàng có thể mong đợi kiếm được ~ 20 - 40.000 đô la doanh thu / năm với tối ưu hóa 100% (lưu trữ là 0,5-1% doanh thu). Rất nhiều người ở đây có thể cung cấp cho bạn tất cả các chi tiết và cài đặt kỹ thuật, nhưng bạn đang cố gắng làm quá nhiều với quá ít. Bạn có thể làm cho nó hoạt động ở khía cạnh kỹ thuật, nhưng về phía doanh nghiệp thì nó sẽ thất bại. Trừ khi tải trang động của bạn (không có fpc) dưới 3 giây, bạn sẽ mất 56% khách truy cập, lý tưởng là nhắm mục tiêu 1-2 giây - chuyển đổi của Google và khách truy cập sẽ trừng phạt trang web nếu không - cuộc gọi khó khăn. Với tình huống 95-99% cơ hội> tải trang 3 giây và / hoặc trang web đi theo.

1

Đây là phần cứng vật lý hay một máy chủ riêng ảo? Bạn có lẽ nên di chuyển cơ sở dữ liệu của mình đến máy chủ chuyên dụng của riêng nó. Điều này cũng mang lại cho bạn lợi ích của việc có thể cô lập cho dù các vấn đề tốc độ của bạn nằm ở Apache / PHP hay với MySQL.

start_session () bị chậm có nghĩa là bạn có thể đang bị thiếu phần cứng. Tôi không biết liệu các lựa chọn công nghệ của bạn có nghĩa là các phiên được lưu trữ trên đĩa hoặc trong RAM nhưng 500-700ms gần như chắc chắn có nghĩa là chúng đang được lưu trữ trên đĩa và bạn đang gặp vấn đề về hiệu năng I / O - có thể là do cơ sở dữ liệu của bạn hoán đổi sang đĩa vì nó không vừa với RAM ... nhưng đó chỉ là suy đoán.

Chúc may mắn!


Cảm ơn câu trả lời của bạn! Tôi sử dụng VPS. Nó không phù hợp lắm với magento nhưng tôi có nhiệm vụ tối ưu hóa nó trong phạm vi này. Có thể kiểm tra là cơ sở dữ liệu trao đổi vào đĩa?
Anthony

1
free -msẽ cho bạn biết nếu bạn đang sử dụng trao đổi, và các phiên bản mới nhất của toplệnh sẽ cho bạn biết nếu nhấn O và P để đặt hàng bằng cách sử dụng trao đổi. Nếu không, bạn phải quay lại sử dụng id tiến trình của mysqld với nội dung tương tự: awk '/^Swap:/ { SWAP+=$2 } END { print SWAP" kB" }' /proc/$(pidof mysqld)/smaps Tất cả được mô tả tại đây: dbasapes.com/2012/04/10/ trên
Ralph Tice

1

Rõ ràng không có cách nào để cho bạn thấy một 'cấu hình làm việc' sẽ tăng hiệu suất của bạn, nhưng Magento thực sự cố gắng làm một cái gì đó như thế này và đăng một ví dụ về ngăn xếp LAMP được cấu hình cao trong các trang trắng hiệu suất của họ. Phương pháp của các trang trắng này áp dụng cho CE và EE. Tôi đặc biệt khuyên bạn nên đọc qua cả hai trang trắng hoàn toàn vì các ý tưởng đề xuất có phần lớn chủ đề này và cung cấp các đề xuất Magento rất cụ thể, trực tiếp từ nguồn: http : //www.magentoc Commerce.com/whitepaper/


1

Cấu hình

ZendFramework (trình tối ưu hóa zend và bộ đệm dữ liệu zend) + APC + Memcache + Nginx

làm việc hoàn hảo cho tôi

hơn 30 người dùng đồng thời có thể tải trang dưới một giây (~ 0,4s-0,6)

Tôi đặt nginx ở cổng 80 (dưới dạng proxy) và apache ở 8080.

Cảm ơn @MattSchweers cho các liên kết. Tôi đã quên điều đó. Nó giúp tôi cấu hình MySQL


không vấn đề gì! Tôi thực sự đã sử dụng những trang trắng đó cho một số tinh chỉnh MySQL trong tuần này - hoạt động tốt.

1

theo kinh nghiệm của tôi, máy chủ litespeed tăng hiệu suất gấp 2 lần so với giấy phép 1cpu $ 32 / tháng. Tôi đã nói rằng bạn chỉ cần giấy phép 1cpu vì php chạy tách biệt trong litespeed.


Các máy chủ web không phải là nút cổ chai. PHP là, thay đổi thành Litespeed sẽ không thay đổi bất cứ điều gì cả.
Ben Lessani - Sonassi

Mặc dù tôi thường đồng ý rằng Litespeed là một lựa chọn tuyệt vời cho Magento, nhưng câu trả lời này có lẽ sẽ không khắc phục được vấn đề do OP đặt ra và nó nằm ngoài ngân sách đã nêu của anh ấy.
Preston

0

Khi bạn có nhiều cửa hàng web và nhiều danh mục, Magento về cơ bản là tạo ra một loại sản phẩm caretsian cho tất cả các cửa hàng, danh mục và sản phẩm, sẽ tạo ra một tải trọng đáng kể cho Cơ sở dữ liệu. APC của bạn bỏ lỡ khá cao, và bạn sẽ cần xem xét nó. Tuy nhiên, ngay cả khi bạn khắc phục APC, tôi nghĩ vấn đề về hiệu suất của bạn có thể sẽ kéo dài đặc biệt là nếu lưu lượng truy cập của bạn tăng lên. Để tăng tốc trang web của bạn, bạn sẽ cần cài đặt bộ đệm op, bộ đệm Varnish hoặc Toàn trang (nếu là Phiên bản doanh nghiệp).

Magento đã đọc rất nhiều ghi vào DB, do đó bạn cũng có thể thử để MySQl của mình ở chế độ sao chép Master Slave có tất cả các magento đọc từ nô lệ, trong khi việc ghi xảy ra với chủ.


0

Tôi sẽ thử thay đổi các tùy chọn APC sau đây và xem liệu lượt truy cập có nhận được không.

apc.shm_segments 1

ngày 7200

apc.user_ttl 7200

Trên một trang web trực tiếp, bạn cũng có thể sử dụng như sau.

ngày mai 0

Điều này sẽ dừng kiểm tra APC nếu tập tin đã thay đổi kể từ lần cuối được biên dịch, giúp bạn tăng tốc độ tốt. Chỉ cần đừng quên xóa bộ đệm APC của bạn khi bạn chỉnh sửa các tệp PHP.


0

Vài suy nghĩ khác. Bạn có thể muốn tăng innodb_buffer_pool_size của mình, 128M có thể hơi thấp và ngay cả các trang web nhỏ cũng có thể phát triển khá nhanh. Biến chỉ ra số lượng dữ liệu của bạn được lưu trong bộ nhớ.

Magento sử dụng điều này cho tất cả các bảng của nó, bao gồm các bảng nhật ký phát triển nhanh chóng. Bạn sẽ muốn đảm bảo rằng bạn giới hạn số lượng dữ liệu này bạn đang lưu giữ. Chạy "php shell / log.php --status" từ dòng lệnh sẽ cho bạn ý tưởng về nơi bạn đang ở và nếu nó vượt quá tầm tay. Ngoài ra còn có các tùy chọn để làm sạch các bảng nhật ký với nó.

2GB RAM không phải là nhiều để làm việc vì vậy bạn cần phải cẩn thận về nơi bạn phân bổ bộ nhớ.

Ngoài ra, Bộ đệm toàn bộ bộ đệm + Bộ đệm ấm bộ đệm có thể giúp giữ cho danh mục trang web của bạn và các trang cms được mồi và nhanh chóng. Bạn có thể thấy chúng tôi ở đây: http // ec Commerce.brimllc.com/full-page-cache-magento.html

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.