Nguyên nhân phân mảnh khi cấp phát bộ nhớ

Một phần của tài liệu NGHIÊN CỨU ẢNH HƯỞNG CỦA CACHING ĐẾN HIỆU NĂNG TRUY VẤN CỦA CÁC ỨNG DỤNG WEB (Trang 38 - 41)

4 Cài đặt một ứng dụng thử nghiệm và đánh giá hiệu năng

3.5Nguyê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/

Một phần của tài liệu NGHIÊN CỨU ẢNH HƯỞNG CỦA CACHING ĐẾN HIỆU NĂNG TRUY VẤN CỦA CÁC ỨNG DỤNG WEB (Trang 38 - 41)