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

67 700 5
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

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ Lê Duy Thanh 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 KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY Ngành: Công Nghệ Thông Tin Cán bộ hướng dẫn: TS. Nguyễn Hải Châu HÀ NỘI - 2012 Lời cảm ơn Trước tiên, tôi xin gửi lời cảm ơn sâu sắc nhất đến thầy giáo TS. Nguyễn Hải Châu, người đã tận tình hướng dẫn tôi trong quá trình thực hiện khóa luận tốt nghiệp. Tôi xin chân thành cảm ơn các thầy cô và các cán bộ của trường Đại học Công Nghệ đã tạo cho tôi những điều kiện thuận lợi nhất để học tập và nghiên cứu. Tôi xin cảm ơn các thầy cô giáo trong bộ môn Các Hệ Thống Thông Tin đã giúp đỡ, hỗ trợ tôi về kiến thức chuyên môn. Tôi cũng xin gửi lời cảm ơn tới các bạn trong lớp K53CC đã ủng hộ, khuyến khích và giúp đỡ tôi trong suốt quá trình học tập tại trường. Cuối cùng, tôi muốn gửi lời cảm ơn vô hạn tới gia đình và bạn bè, những người thân yêu luôn bên cạnh và động viên tôi trong suốt quá trình học tập và thực hiện khóa luận tốt nghiệp. Tôi xin chân thành cảm ơn! Sinh Viên Lê Duy Thanh ii 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 Lê Duy Thanh Khóa QH-2008-I/CQ , ngành Công nghệ Thông tin Tóm tắt Khóa luận tốt nghiệp: Hiện nay, với sự bùng nổ của mạng Internet và sự phát triển mạnh mẽ của các trang mạng xã hội có tính chia sẽ cao như Facebook, Youtube, Twitter . . . hoặc các trang tin tức lớn mà có hàng triệu lượt view mỗi ngày đều yêu cầu có một hệ thống cơ sở dữ liệu rất lớn. Đối với những hệ thống lớn như vậy thì vấn đề performance luôn là bài toán khó đối với những nhà thiết kế cơ sở dữ liệu. Bởi vì, với những hệ thống cơ sở dữ liệu lớn thường rất dễ xảy ra tình trạng thắt cổ chai khi có một số lượng lớn truy vấn đến cơ sở dữ liệu cùng lúc. Điều này gây ảnh hưởng rất lớn đến hiệu năng của toàn bộ hệ thống. Và giải pháp data caching ra đời nhằm mục đích giải quyết tình trạng thắt cổ chai này, giúp nâng cao performance của hệ thống, và một công cụ được rất nhiều hệ thống lớn sử dụng đấy là Memcached. Khóa luận tập trung tìm hiểu và nghiên cứu cách triển khai hệ thống Mem- cached lên một trang web cùng với việc sử dụng bộ nhớ Cache của MySQL nhằm nâng cao hiệu năng truy vấn tới cơ sở dữ liệu và giảm thời gian phản hồi của các yêu cầu tới trang web. Khóa luận sử dựng Drupal CMS để xây dựng một trang web thử nghiệm. Khóa luận cũng đã triển khai thành công việc sử dụng hệ thống Memcached và Query Cache của MySQL trên trang web này và bước đầu đã thu được những kết quả thống kê ban đầu hết sức khả quan. Với hơn 90% các truy vấn được tìm thấy trong bộ nhớ cache và thời gian phản hồi giảm đi một nửa, kết quả này cho thấy mô hình đề xuất là đúng đắn và có thể triển khai thực tế. Lời cam đoan Tôi xin cam đoan 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 được trình bày trong khóa luận này do tôi thực hiện dưới sự hướng dẫn của TS. Nguyễn Hải Châu. Tất cả các số liệu, kết quả được trình bày trong khóa luận là hoàn toàn trung thực và chưa từng được công bố trong bất kỳ một công trình nào khác. Trong khóa luận, không có việc sao chép tài liệu hoặc công trình nghiên cứu của người khác mà không chỉ rõ về tài liệu tham khảo. Khóa luận được hoàn thành trong thời gian tôi là Sinh viên tại Bộ môn Các hệ thống thông tin, Khoa Công nghệ Thông tin, Trường Đại học Công nghệ, Đại học Quốc gia Hà Nội. Sinh Viên Lê Duy Thanh iv Mục lục Tiêu đề i Tóm tắt iii Lời cam đoan iv Danh sách hình vẽ viii Danh sách các ký hiệu và từ viết tắt ix 1 Tổng quan về Caching 3 1.1 Caching là gì? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.2 Data Caching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.3 Database Caching . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2 Tìm hiểu về Memcached và built-in caching MySQL 6 2.1 Tìm hiểu về Memcached . . . . . . . . . . . . . . . . . . . . . . . . 6 2.1.1 Memcache là gì? . . . . . . . . . . . . . . . . . . . . . . . . 6 2.1.2 Memcached làm được những gì? . . . . . . . . . . . . . . . . 8 2.1.3 Memcached không dùng để làm gì? . . . . . . . . . . . . . . 9 2.2 Giới thiệu về built-in caching MySQL . . . . . . . . . . . . . . . . . 10 3 Nghiên cứu cài đặt, sử dụng memcached và built-in caching cho MySQL 12 3.1 Cài đặt và sử dụng memcached . . . . . . . . . . . . . . . . . . . . 12 3.1.1 Cài đặt memcached . . . . . . . . . . . . . . . . . . . . . . . 12 3.1.2 Thao tác với dữ liệu dùng telnet . . . . . . . . . . . . . . . 15 3.1.3 Một số lựa chọn lưu trữ dữ liệu . . . . . . . . . . . . . . . . 19 3.1.4 Thao tác với dữ liệu dùng một thư viện memcached Client . 20 v MỤC LỤC vi 3.1.5 Cài đặt memcached Linux client . . . . . . . . . . . . . . . . 21 3.2 Cài đặt và sử dụng built-in caching MySQL . . . . . . . . . . . . . 24 3.2.1 Cài đặt Query Cache cho MySQL . . . . . . . . . . . . . . . 24 3.2.2 Sử dụng Query Cache . . . . . . . . . . . . . . . . . . . . . 25 3.2.3 Sự phân mảnh bộ nhớ . . . . . . . . . . . . . . . . . . . . . 28 4 Cài đặt một ứng dụng thử nghiệm và đánh giá hiệu năng 31 4.1 Cài đặt drupal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 4.2 Cài đặt Module cho drupal . . . . . . . . . . . . . . . . . . . . . . . 38 4.2.1 Tải module . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 4.2.2 Kích hoạt module . . . . . . . . . . . . . . . . . . . . . . . . 39 4.2.3 Sử dụng module Devel . . . . . . . . . . . . . . . . . . . . . 40 4.3 Thống kê, giám sát . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 4.3.1 Cài đặt MRTG . . . . . . . . . . . . . . . . . . . . . . . . . 42 4.3.2 Cấu hình MRTG . . . . . . . . . . . . . . . . . . . . . . . . 43 4.4 Đánh giá hiệu năng . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 4.4.1 Kết quả thống kê từ Memcached và MySQL . . . . . . . . . 47 4.4.2 Kết quả thời gian phản hồi sử dụng công cụ ab . . . . . . . 48 Kết luận 55 Tài liệu tham khảo 57 Danh sách hình vẽ 1.1 Mô hình cơ bản của Data Caching . . . . . . . . . . . . . . . . . . . 4 2.1 Mô hình hoạt động của Memcached . . . . . . . . . . . . . . . . . . 7 2.2 Mô hình không sử dụng Memcached . . . . . . . . . . . . . . . . . . 8 2.3 Mô hình sử dụng Memcached . . . . . . . . . . . . . . . . . . . . . 9 3.1 Một số tùy chọn của memcached . . . . . . . . . . . . . . . . . . . 14 3.2 Danh sách các biến của hệ thống Query Cache . . . . . . . . . . . . 24 3.3 Quá trình cấp phát các khối trong bộ nhớ để lưu trữ dữ liệu . . . . 26 3.4 Danh sách các biến trạng thái của Query Cache . . . . . . . . . . . 27 3.5 Nguyên nhân phân mảnh khi cấp phát bộ nhớ . . . . . . . . . . . . 29 4.1 Màn hình đăng nhập vào phpMyAdmin . . . . . . . . . . . . . . . . 32 4.2 Tạo cơ sở dữ liệu cho trang Web . . . . . . . . . . . . . . . . . . . 33 4.3 Chọn chế độ cài đặt . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 4.4 Chọn ngôn ngữ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 4.5 Một số yêu cầu cài đặt . . . . . . . . . . . . . . . . . . . . . . . . . 34 4.6 Cấu hình cơ sở dữ liệu . . . . . . . . . . . . . . . . . . . . . . . . . 35 4.7 Tiến trình cài đặt . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 4.8 Thông tin về trang web . . . . . . . . . . . . . . . . . . . . . . . . . 36 4.9 Thông tin về admin . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 4.10 Thiết lập múi giờ . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 4.11 Cài đặt hoàn thành . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 4.12 Trang chủ cài đặt . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 4.13 Kích hoạt các module . . . . . . . . . . . . . . . . . . . . . . . . . . 39 4.14 Thống kê thông tin trạng thái của memcached . . . . . . . . . . . . 40 4.15 Cấu hình module . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 4.16 Sinh bài viết . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 vii DANH SÁCH HÌNH VẼ viii 4.17 Thống kê cache hits - cache misses của bộ nhớ Cache MySQL . . . 47 4.18 Tỷ lệ phần trăm cache hits - cache misses của bộ nhớ Cache MySQL 47 4.19 Thống kê cache hits - cache misses của Memcached . . . . . . . . . 48 4.20 Tỷ lệ phần trăm cache hits - cache misses của Memcached . . . . . 48 4.21 Biểu đồ kết quả thống kê thời gian phản hồi trung bình . . . . . . . 53 Bảng ký hiệu và từ viết tắt Ký hiệu Ý nghĩa ab Apache Bench API Application Programming Interface CMS Content Management System CPU Central Processing Unit MRTG Multi Router Traffic Grapher NVP Name Value Pair SNMP Simple Network Management Protocol SRAM Static Random Access Memory TCP Transmission Control Protocol UDP User Datagram Protocol ix Lời mở đầu Trong thế giới khoa học máy tính, cache là một cơ chế đặc biệt giúp việc lưu trữ và nhận dữ liệu đạt được tốc độ cao. Bộ nhớ cache là một bộ nhớ nhỏ tốc độ cao thường là Static RAM (SRAM) có chứa những dữ liệu truy cập gần đây nhất của bộ nhớ chính. Kỹ thuật caching được thực hiện bởi các nhà thiết kế hệ thống để cải thiện thời gian phản hồi của ứng dụng và giảm tải hệ thống. Phương pháp caching từ lâu đã được sử dụng để cải thiện hiệu suất của các ứng dụng Internet. Có rất nhiều phương pháp caching được các nhà thiết kế cơ sở dữ liệu sử dụng như CPU cache, Web cache, Database cache, Object cache, data caching Trong phạm vi của tài liệu này, chúng ta sẽ đi nghiên cứu, tìm hiểu về kỹ thuật Data Caching và Memcached chính là một thể hiện đặc trưng của phương pháp này. Memcached là một công cụ hỗ trợ data caching rất tốt và rất mạnh mẽ, và dĩ nhiên ưu điểm hàng đầu của nó là hoàn toàn miễn phí. Nó thường được sử dụng để tối ưu hóa việc tải dữ liệu từ cơ sở dữ liệu cho các ứng dụng trên nền web. Nó rất thích hợp để caching những dữ liệu được truy cập nhiều nhưng ít bị thay đổi, nó giúp tăng tốc truy cập và giảm workload với database trong hệ thống. Ngoài ra Memcached cũng có điểm mạnh là hỗ trợ việc phân tán rất tốt, cho nên chúng ta có thể dễ dàng triển khai với nhiều server Memcached. Vào lúc đầu, hệ thống Memcached được phát triển bởi Danga Interactive và dùng cho LiveJournal. Sau đó Memcached trở nên phổ biến và được dùng trên rất nhiều các website lớn khác như Youtube, Wikipedia, Flickr, Twitter, Mixi Đây cũng là một hệ thống bộ nhớ phân tán mà Facebook đã sử dụng như một caching layer giữa web servers và MySQL server. Facebook đã tối ưu hóa Memcached và các phần liên quan và xây dựng một hệ thống bao gồm hàng ngàn servers với hàng chục terabytes dữ liệu được cached tại mỗi thời điểm. Có thể coi đây là hệ thống Memcached lớn nhất thế giới tại thời điểm này. Có thể nói Memcached là một công cụ hữu dụng để giải quyết bài toán performance cho các ứng dụng web. Memcached giúp nâng cao performance cho các ứng dụng web và giúp tránh được tình trạng tắc nghẽn khi có một số lượng lớn các truy vấn tới cơ sở dữ liệu cùng lúc. Khóa luận 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 thực hiện nghiên cứu, tìm hiểu và triển khai một hệ 1 [...]... trữ tạm thời các dữ liệu đã được truy cập Nó lưu trữ một phần bản sao của cơ sở dữ liệu gốc Điều này giúp các máy chủ đáp ứng nhanh hơn các yêu cầu từ người dùng cuối Caching giúp nâng cao hiệu suất truy vấn và giảm tải cho server Trong khuôn khổ của tài liệu này, chúng ta sẽ đi nghiên cứu hai kỹ thuật caching ảnh hưởng lớn tới hiệu năng truy vấn của các ứng dụng web đó là kỹ thuật Data Caching và kỹ... Quá trình cấp phát các khối trong bộ nhớ để lưu trữ dữ liệu Ngoài ra, các khối chứa các bộ kết quả của các truy vấn có hai bảng băm Một bảng băm lưu trữ các truy vấn Bảng còn lại chứa danh sách các bảng của cơ sở dữ liệu mà các truy vấn này tham chiếu tới Khi một bảng bị sửa đổi, bảng băm thứ hai sẽ được hỏi để xác định những truy vấn sẽ bị xóa bỏ do truy vấn bị mất hiệu lực Ngoài các biến hệ thống... hấu hết các hệ quản trị cơ sở dữ liệu lớn trên thế giới như Oracle, PostgreSQL, MySQL đều cung cấp một tính năng nhằm cải thiện khả năng mở rộng và hiệu suất của các ứng dụng truy cập tới cơ sở dữ liệu đấy chính là bộ nhớ tạm thời (Cache) Theo nghiên cứu của Qiong Luo và các cộng sự [9] việc sử dụng Database Caching có một số lợi ích sau đây: • Khả năng mở rộng: Phân phối khối lượng truy vấn từ backend1... số built-in caching của MySQL nhằm tăng tốc độ truy xuất, giảm thời gian phản hồi của các yêu cầu tới một trang web Nội dung của khóa luận được chia thành các chương như sau: Chương 1: Giới thiệu tổng quan về kỹ thuật Caching Khái niệm về Caching và một số phương pháp Caching được sử dụng phổ biến trên thế giới giúp nâng cao hiệu suất truy vấn tới cơ sở dữ liệu của máy chủ Chương 2: Giới thiệu về Memcached... nơi lưu trữ các phần khác nhau của dữ liệu backend, ví dụ, dữ liệu của khách hàng Platinum được lưu trữ trong khi dữ liệu của các khách hàng bình thường khác thì không • Tính sẵn sàng: Có khả năng tiếp tục phục vụ cho các ứng dụng mà kết quả của yêu cầu chỉ phụ thuộc trên các bảng được lưu trữ tạm khi mà backend server không có khả năng phục vụ • Hiệu suất: Có khả năng đáp ứng nhanh chóng các kết quả... biến query_cache_size có giá trị lớn hơn 0 cho phép lưu trữ các truy vấn của câu lệnh SELECT với các quy tắc ở trên Điều này có nghĩa là query cache sẽ lưu trữ tất cả các truy vấn có thể, và chúng ta có thể lựa chọn những truy vấn nào không được lưu trữ bằng cách dùng SELECT SQL_NO_CACHE • Không lưu trữ tất cả mọi truy vấn, trừ những truy vấn được lựa chọn Đặt biến query_cache_type với tùy chọn DEMAND... Caching và kỹ thuật Database Caching 1.2 Data Caching Data Caching là một kĩ thuật được cung cấp để lưu trữ và truy cập các phần tử trong bộ nhớ một cách tạm thời nhằm cải thiện hiệu năng của hệ thống dựa vào thời gian truy xuất nhanh hơn rất nhiều so với việc phải truy xuất trực tiếp vào cơ sở dữ liệu gốc 3 Hình 1.1: Mô hình cơ bản của Data Caching Với mô hình yêu cầu dữ liệu truy n thống Mỗi khi Client... thân MySQL cũng cung cấp khả năng cache các truy vấn tới cơ sở dữ liệu Hình 3.2: Danh sách các biến của hệ thống Query Cache Để bật tính năng này của MySQL, chúng ta thêm hai dòng sau vào phần [mysqld] 24 của file my.cnf, là file cấu hình của MySQL: query_cache_type = 1 query_cache_size = 128 Danh sách các biến hệ thống của Query Cache bạn có thể xem hình 3.2 3.2.2 Sử dụng Query Cache Nếu chúng ta... thực hiện truy vấn và trả lại kết quả tới Client Điều này có thể hữu ích đối với những trang có lượng truy cập thấp, ko đáng kể Với những website có lượng truy cập lớn, điều này là rất bất lợi Cứ mỗi một truy vấn lại tạo ra một kết nối tới cơ sở dữ liệu Chẳng bao lâu sau mà Máy chủ chứa cơ sở dữ liệu sẽ bị treo, gây ảnh hưởng tới các truy vấn đang chờ đợi Nhược điểm này đã được mô hình Data Caching khắc... được chia thành các khối nhỏ hơn Các khối này được sử dụng để lưu những tập kết quả của các truy vấn Kích thước nhỏ nhất của mỗi khối được xác định bởi 4 Thông thường 3 tùy chọn này được đặt tương ứng là 0, 1 và 2 25 query_cache_min_res_unit Mặc định, mỗi khối sẽ có độ lớn là 4 Kb Đối với những tập kết quả nhỏ hơn 4 Kb, nó vẫn sử dụng 4 Kb của bộ nhớ để lưu vào một khối Khi có một truy vấn được lưu trữ, . có một số lượng lớn các truy vấn tới cơ sở dữ liệu cùng lúc. Khóa luận 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 thực hiện nghiên cứu, tìm hiểu và triển khai. cam đoan 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 được trình bày trong khóa luận này do tôi thực hiện dưới sự hướng dẫn của TS. Nguyễn Hải Châu. Tất cả các số. chúng ta sẽ đi nghiên cứu hai kỹ thuật caching ảnh hưởng lớn tới hiệu năng truy vấn của các ứng dụng web đó là kỹ thuật Data Caching và kỹ thuật Database Caching. 1.2 Data Caching Data Caching là

Ngày đăng: 06/10/2014, 12:58

Từ khóa liên quan

Mục lục

  • Tiêu

  • Tóm tt

  • Li cam oan

  • Danh sách hình ve

  • Danh sách các ký hiu và t vit tt

  • Tng quan v Caching

    • Caching là gì?

    • Data Caching

    • Database Caching

    • Tìm hiu v Memcached và built-in caching MySQL

      • Tìm hiu v Memcached

        • Memcache là gì?

        • Memcached làm c nhng gì?

        • Memcached không dùng làm gì?

        • Gii thiu v built-in caching MySQL

        • Nghiên cu cài t, s dung memcached và built-in caching cho MySQL

          • Cài t và s dung memcached

            • Cài t memcached

            • Thao tác vi d liu dùng telnet

            • Mt s la chon lu tr d liu

            • Thao tác vi d liu dùng mt th vin memcached Client

            • Cài t memcached Linux client

            • Cài t và s dung built-in caching MySQL

              • Cài t Query Cache cho MySQL

              • S dung Query Cache

              • S phân manh b nh

Tài liệu cùng người dùng

Tài liệu liên quan