Trong những tháng qua, chúng tôi cảm thấy rằng trang web của chính mình – wpml.org – đang bị chậm lại. Đầu tiên, chúng tôi đã áp dụng phương pháp mạnh tay là nâng cấp máy chủ. Khi cách này không hiệu quả, chúng tôi đã tập trung suy nghĩ và thực sự phân tích vấn đề. Kết quả chính là phiên bản phát hành ngày hôm nay, giúp giảm 70% tải CPU và thời gian phản hồi của chúng tôi.
Những gì chúng tôi đã học được về phân tích hiệu suất
Hiệu suất cũng luôn rất quan trọng đối với chúng tôi. Chúng tôi đã kiểm tra bộ nhớ, các truy vấn và thời gian CPU của WPML trong nhiều năm nay và cải thiện nó trên mỗi phiên bản phát hành. Những gì chúng tôi học được từ đợt phát triển này là các bài kiểm tra tĩnh không phải lúc nào cũng tiết lộ những vấn đề thực sự.
Phương pháp mà chúng tôi đã sử dụng cho đến nay để kiểm tra hiệu suất là:
- Tạo một cơ sở dữ liệu lớn với nhiều bài viết, postmeta, danh mục và người dùng
- Tạo danh sách các trang “nặng” hơn
- Tải chúng nhiều lần, đo thời gian tải và lập hồ sơ
Điều này cho chúng tôi thấy các trang giao diện người dùng và trang quản trị mà chúng tôi cần gỡ lỗi và tối ưu hóa. Chúng tôi đã đảm bảo giảm số lượng truy vấn, tránh các truy vấn dài và viết mã PHP hiệu quả.
Vậy, chúng tôi đã bỏ lỡ điều gì?
WordPress và WPML phức tạp hơn một chút so với việc “yêu cầu một trang và đợi nó tải”. Mọi thứ diễn ra thông qua cơ sở dữ liệu, vốn là một tài nguyên dùng chung. Một việc mà khách truy cập A làm với cơ sở dữ liệu có thể ảnh hưởng đến trải nghiệm mà khách truy cập B nhận được.
Để hiểu những điểm nghẽn này, chúng tôi đã cài đặt một công cụ có tên là Appoptics trên trang web chính thức của mình. Nó cho phép chúng tôi đo lường các hàm và truy vấn nào tốn nhiều thời gian, để chúng tôi có thể phân tích lý do.
Cải thiện hiệu suất thực tế
Chúng tôi phát hiện ra rằng một thao tác tưởng chừng như vô hại trong Dịch chuỗi đã gây ra xung đột tài nguyên đáng kể với một truy vấn thường xuyên vào bảng options từ một plugin khác. Nếu bạn chỉ chạy lệnh gọi đó 1 triệu lần, bạn sẽ không cảm thấy bất kỳ vấn đề gì. Tuy nhiên, khi các trang khác cần truy cập vào bảng options, chúng phải đợi cho đến khi các chuỗi không còn truy cập vào nó nữa. Danh sách các yêu cầu đang chờ xử lý tăng lên, nó làm tràn cơ sở dữ liệu và mọi thứ trở nên hỗn loạn.

Nhìn vào biểu đồ, bạn có thể thấy rằng hầu hết nỗ lực của máy chủ của chúng tôi đều dồn vào cơ sở dữ liệu (cái bảng liên tục khóa và mở khóa đó). Bạn có thể đoán được chúng tôi đã áp dụng bản sửa lỗi vào lúc nào.
Nhưng tôi có các vấn đề hiệu suất khác, bạn có thể sửa chúng không?
Những gì chúng tôi nắm bắt được chắc chắn sẽ giúp ích không chỉ cho wpml.org mà còn cho nhiều trang web có lượng truy cập cao khác đang chạy WPML. Nếu bạn có một trang web với tải rất nhỏ, bạn sẽ hầu như không cảm nhận được sự cải thiện này. Nó chỉ ảnh hưởng đến các trang web có nhiều truy cập đồng thời và mọi người đang làm nhiều việc khác nhau.
Có thể các trang web khác có thể sử dụng các tối ưu hóa hiệu suất khác. Bây giờ chúng tôi đã học được rằng cách tốt nhất để làm công việc này là cài đặt lập hồ sơ trên trang web chính thức thực tế, vốn đang bị hiệu suất kém. Ngay cả khi chúng tôi nhận được bản sao cơ sở dữ liệu của bạn, chúng tôi cũng không thể mô phỏng lưu lượng truy cập của bạn. Đây là lý do tại sao tất cả các đợt kiểm tra trước đây của chúng tôi không phát hiện ra vấn đề cụ thể này.
Nhân tiện, đợt cải thiện hiệu suất của chúng tôi không chỉ tiết lộ các điểm nghẽn trong WPML. Chúng tôi đã sửa những gì chúng tôi tìm thấy trong WPML, nhưng chúng tôi cũng nhận thấy những vấn đề nghiêm trọng ở những nơi khác. Một số lỗi chúng tôi đã tự vá và một số lỗi chúng tôi đã tối ưu hóa thông qua cơ sở dữ liệu.
Nếu bạn quan tâm, hãy cho chúng tôi biết và chúng tôi sẽ giúp bạn cài đặt phân tích hiệu suất trên các trang web chính thức của bạn. Sau đó, chúng tôi sẽ rất sẵn lòng giúp bạn phân tích kết quả. Nếu chúng tôi tìm thấy bất cứ điều gì trong WPML, chúng tôi sẽ sửa nó. Rất có khả năng các trang web có vấn đề về hiệu suất sẽ tìm thấy một số vấn đề đến từ các nguồn đáng ngạc nhiên.
Những điểm mới khác trong WPML 4.2.6
WPML Core 4.2.6
- Đã thêm bộ lọc wpml_post_edit_meta_box_priority để thay đổi mức độ ưu tiên của hộp meta chỉnh sửa bài viết của WPML
- Đã sửa lỗi nâng cấp các plugin trong trường hợp cài đặt thư mục con – luôn sử dụng URL của trang web
- Chỉ lưu các thông báo khi cần thiết để giảm số lần ghi thêm vào bảng wp_options
- Đã sửa một vấn đề bảo mật với các liên kết của bộ chuyển đổi ngôn ngữ
WPML Dịch Chuỗi 2.10.4
- Đã sửa lỗi nhập tệp mo của ST để bảng wp_option không bị cập nhật khi không cần thiết
WPML Quản lý dịch thuật 2.8.5
- Đã cải thiện kiểu dáng của các điều khiển phân trang trong trang Công việc dịch thuật
- Đã sửa lỗi chỉ định người dịch trong trang Công việc dịch thuật khi ngôn ngữ của trang quản trị khác với tiếng Anh
- Đã sửa nội dung không phù hợp của cột “Được dịch bởi” khi ngôn ngữ của trang quản trị khác với tiếng Anh
WPML Media Translation 2.5.2
- Chỉ lưu các thông báo khi cần thiết để giảm số lần ghi thêm vào bảng wp_options
WPML CMS Nav 1.5.1
- Đã cải thiện hiệu suất bằng cách chỉ xóa bộ nhớ cache khi có thể áp dụng
Tải xuống và cập nhật
Như thường lệ, bạn sẽ tự động nhận được bản cập nhật này cho tất cả các trang web đã đăng ký của mình. Bạn luôn có thể đăng nhập vào tài khoản WPML của mình để tải xuống và cài đặt thủ công.
Chúng tôi khuyên bạn nên sao lưu trước khi cập nhật bất kỳ thứ gì trên trang web của mình.
Phản hồi? Câu hỏi? Đề xuất?
Các trang web của chúng tôi hiện đang chạy nhanh hơn nhiều, nhưng chúng tôi rất muốn nghe về các trang web của bạn. Vui lòng để lại bình luận của bạn và chúng tôi sẽ phản hồi lại.

