4 Cài đặt một ứng dụng thử nghiệm và đánh giá hiệu năng
3.5 Nguyên nhân phân mảnh khi cấp phát bộ nhớ
mảnh này. Có một số phương pháp có thể giảm thiểu số lượng phân mảnh bộ nhớ mà chúng ta sẽ đi tìm hiểu sau đây:
• Cách thứ nhất: Thiết lập kích thước của các khối của bộ nhớ sẽ được cấp phát theo kích thước trung bình của các khối đã được cấp phát và đang lưu trữ dữ liệu. Kích thước trung bình được tính theo công thức sau:
query_cache_size−Qcache_f ree_memory Qcache_queries_in_cache
Tuy nhiên, thật không may là điều này không phải hiệu quả đối với mọi ứng dụng. Nếu một ứng dụng có sự tổ hợp của cả hai loại truy vấn lớn và nhỏ thì phương pháp này có thể sẽ tạo nên những phân mảnh lớn hơn.
• Cách thứ hai: Giảm thiểu tới mức tối đa những truy vấn bị mất hiệu lực. Thông thường thì không thể thay đổi tần suất của các lệnh UPDATE, INSERT
và DELETE trên một bảng. Tuy nhiên có thể giảm thiểu những truy vấn hết hiệu lực bằng cách cắt những bảng lớn vào trong những bảng nhỏ hơn sử dụng các bảng MERGE hoặc phân vùng.
Trong trường hợp mà sự phân mảnh rất khó có thể giảm thiểu được, thì có thể cách tốt nhất để giảm sự phân mảnh bộ nhớ đó là phân loại những truy vấn được lưu trữ bằng cách thiết lập biến query_cache_type là DEMAND và sử dụng gợi ý
Trên đây, chúng ta đã tìm hiểu một số phương pháp giúp giảm thiểu sự phân mảnh bộ nhớ. Nhưng trên thực tế sự phân mảnh là điều không thể tránh khỏi. Vì vậy, sau khi hệ thống sử dụng được một thời gian, chúng ta có thể thiết lập lại các khối đã cấp phát để lưu các bộ kết quả sao cho các khối này nằm ở những khối của bộ nhớ liên tiếp nhau hoặc khởi động lại bộ nhớ cache.
• Nếu kích thước của bộ nhớ cache không quá lớn, chúng ta có thể thực thi lệnh FLUSH QUERY CACHE. Lệnh này làm gọn lại bộ nhớ bằng cách khóa các query cache và thực hiện sắp xếp lại chúng sao cho không có khoảng trống giữa các khối của bộ nhớ. Nghĩa là, các khối lưu trữ các query cache sẽ được sắp xếp liên tiếp nhau trong bộ nhớ.
Chúng ta nên lưu ý rằng, nếu kích thước của bộ nhớ cache lớn thì quá trình này có thể sẽ mất thời gian. Hơn nữa khi chống phân mảnh sẽ tiến hành khóa tất cả các query cache trong bộ nhớ cache. Vì thế khi có một truy vấn yêu cầu lưu trữ, nó sẽ phải đợi cho đến khi quá trình chống phân mảnh hoàn thành và các query cache được mở khóa trở lại. Nếu biếnquery_cache_type
được đặt là ON, điều này có nghĩa là tất cả các câu truy vấn SELECT ngoại trừ những truy vấn SQL_NO_CACHEsẽ đều phụ thuộc vào các query cache có bị khóa hay không. Thực thi lệnh FLUSH QUERY CACHEcó thể ngăn chặn rất nhiều hoặc tất cả các truy vấn, vì vậy hãy cẩn thận khi thực hiện chống phân mảnh.
• Nếu kích thước bộ nhớ cache quá lớn và quá trình phân mảnh diễn ra mãnh liệt hoặc vì một lý do nào đó mà cần thiết phải làm rỗng bộ nhớ cache, khi đó chúng ta có thể dùng lệnh RESET QUERY CACHE.
Chương 4
Cài đặt một ứng dụng thử nghiệm và đánh giá hiệu năng
Trong chương này, chúng ta sẽ đi tìm hiểu cài đặt một hệ quản trị nội dung (CMS) để xây dựng một trang Web, nơi mà chúng ta sẽ triển khai memcached. Sau đấy tiến hành thống kê, đánh giá hiệu năng mà Memcached mang lại cho trang web vừa xây dựng.
4.1 Cài đặt drupal
Trước khi cài đặt, drupal có một số yêu cầu về hệ thống như sau: Không gian đĩa
15 Megabytes Web server
Apache 1.3, Apache 2.x, hoặc Microsoft IIS Database server
Drupal 5: MySQL 3.23.17 hoặc cao hơn
Drupal 6: MySQL 4.1 hoặc cao hơn, PostgreSQL 7.1
Drupal 7: MySQL 5.0.15 hoặc cao hơn với PDO, SQLite 3.3.7 hoặc cao hơn
Note: Microsoft SQL Server and Oracle are supported by an additional module
PHP
Drupal 6: PHP 4.4.0 hoặc cao hơn (nên dùng bản 5.2) Drupal 7: PHP 5.2.5 hoặc cao hơn (nên dùng bản 5.3 ) Drupal 8: PHP 5.3
Trong tài liệu này, chúng ta dùng drupal phiên bản 7.14. Trước tiên, chúng ta sẽ tiến hành tải gói cài đặt trên trang chủ của drupal. Chúng ta mở một cửa sổ terminal và đánh lệnh sau:
wget http://ftp.drupal.org/files/projects/drupal-7.14.tar.gz
Sau khi quá trình tải kết thúc, chúng ta giải nén gói vừa tải về:
tar xzvf drupal-7.14.tar.gz
Tiến hành copy thư mục vừa giải nén vào thư mục gốc của apache, trong tài liệu này tôi sử dụng thư mục gốc là /var/www/, và đổi tên thư mục thành drupal:
mv drupal-7.14 /var/www/drupal
Bước tiếp theo, chúng ta đi tạo một cơ sở dữ liệu trên host để lưu dữ liệu cho trang Web. Trên cửa sổ trình duyệt chúng ta truy cập vào phpmyadmin:
http://localhost/phpmyadmin/