1. Trang chủ
  2. » Công Nghệ Thông Tin

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 703 5

Đ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

Thông tin cơ bản

Định dạng
Số trang 67
Dung lượng 1,42 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Khóa luận tập trung tìm hiểu và nghiên cứu cách triển khai hệ thống cached lên một trang web cùng với việc sử dụng bộ nhớ Cache của MySQL nhằmnâng cao hiệu năng truy vấn tới cơ sở dữ liệ

Trang 1

ĐẠ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

HÀ NỘI - 2012

Trang 2

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ễnHải Châu, người đã tận tình hướng dẫn tôi trong quá trình thực hiệnkhó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 Đạihọc Công Nghệ đã tạo cho tôi những điều kiện thuận lợi nhất để họctậ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ôngTin đã 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

Trang 3

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 ThanhKhóa QH-2008-I/CQ , ngành Công nghệ Thông tinTó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áctrang mạng xã hội có tính chia sẽ cao như Facebook, Youtube, Twitter hoặc cáctrang 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 đề performanceluô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 đếnhiệu năng của toàn bộ hệ thống Và giải pháp data caching ra đời nhằm mục đíchgiả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 cached lên một trang web cùng với việc sử dụng bộ nhớ Cache của MySQL nhằmnâ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ácyêu cầu tới trang web

Mem-Khóa luận sử dựng Drupal CMS để xây dựng một trang web thử nghiệm Mem-Khóaluận cũng đã triển khai thành công việc sử dụng hệ thống Memcached và QueryCache 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ế

Trang 4

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ấncủ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 trungthự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óaluậ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ệ, Đạihọc Quốc gia Hà Nội

Sinh Viên

Lê Duy Thanh

Trang 5

Mục lục

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

Trang 6

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

Trang 7

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

Trang 8

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

Trang 9

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

Trang 10

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ệclư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 truycập gần đây nhất của bộ nhớ chính Kỹ thuật caching được thực hiện bởi cácnhà thiết kế hệ thống để cải thiện thời gian phản hồi của ứng dụng và giảmtải hệ thống Phương pháp caching từ lâu đã được sử dụng để cải thiện hiệusuất của các ứng dụng Internet Có rất nhiều phương pháp caching được cácnhà thiết kế cơ sở dữ liệu sử dụng như CPU cache, Web cache, Databasecache, 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 ứngdụng trên nền web Nó rất thích hợp để caching những dữ liệu được truycập nhiều nhưng ít bị thay đổi, nó giúp tăng tốc truy cập và giảm workloadvớ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ớinhiề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ùngtrê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ụngnhư 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 baogồm hàng ngàn servers với hàng chục terabytes dữ liệu được cached tại mỗithờ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ánperformance cho các ứng dụng web Memcached giúp nâng cao performancecho 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ấncủ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ệ

Trang 11

thống Memcached đơn giản cùng với việc thiết lập một số thông số built-incaching của MySQL nhằm tăng tốc độ truy xuất, giảm thời gian phản hồicủ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ớigiú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 và caching với MySQL Tìm hiểuđôi nét về lịch sử phát triển của Memcached và cấu trúc cơ bản củaMemcached Phần cuối sẽ giới thiệu về Query Cache của MySQL.Chương 3: Phần đầu của chương trình bày chi tiết về cài đặt Memcachedtrên hệ điều hành Ubuntu 11.10 Đồng thời tìm hiểu một số thao tácvới Memcached dùng telnet và dùng Memcached Linux Client Phầnsau sẽ đi nghiên cứu, tìm hiểu cách cài đặt và sử dụng built-in cachingMySQL Trong phần này sẽ trình bày chi tiết về một số thông số củaquery cache và một vấn đề kinh điển trong lưu trữ đấy là sự phân mảnh

bộ nhớ trong bộ nhớ cache của MySQL

Chương 4: Xây dựng một trang web thử nghiệm bằng Drupal CMS Tíchhợp trang web với Memcached kết hợp với sử dụng Query Cache củaMySQL Hướng dẫn cài đặt công cụ MRTG và cấu hình MRTG đểgiám sát các thông số của Memcached và bộ nhớ Cache MySQL Ngoài

ra, chương ngày cũng giới thiệu về công cụ ab dùng để kiểm tra kếtquả mà Memcached và Query Cache MySQL mang lại cho trang webthử nghiệm

Phần kết luận: Tổng kết, tóm lược nội dung chính của khóa luận và ýnghĩa thực tiễn của khóa luận Đồng thời đưa ra hướng nghiên cứutiếp theo của khóa luận

Trang 12

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 DataCaching 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ựavà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ếpvào cơ sở dữ liệu gốc

Trang 13

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 có một yêu cầu gửi

về Database server, sẽ tạo ra một kết nối tới cơ sở dữ liệu, 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ượngtruy 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ẳngbao 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 truyvấn đang chờ đợi Nhược điểm này đã được mô hình Data Caching khắc phục Mỗikhi có một yêu cầu gửi tới từ Client, máy chủ web sẽ kiểm tra trong Cache xem

có kết quả lưu lại chưa, nếu chưa có (cache miss), sẽ thực hiện tạo kết nối tới máychủ cơ sở dữ liệu Sau khi thực hiện truy vấn, kết quả trả lại sẽ được lưu tạm thờivào Cache, rồi sẽ trả lại cho phía Client Khi một Client khác có yêu cầu truy vấntương tự, máy chủ web sẽ tự động lấy kết quả mà nó đã lưu sẵn từ trong Cache

ra trả về cho Client đó (cache hit) Điều này giảm tải rất nhiều đối với máy chủdatabase và tốc độ đáp ứng dữ liệu trong trường hợp này cũng cao hơn nhiều lần

so với việc phải lấy kết quả truy vấn từ cơ sở dữ liệu gốc Và một công cụ hỗ trợrất tốt Data Caching đấy chính là Memcached

Trang 14

Theo nghiên cứu của Qiong Luo và các cộng sự [9] việc sử dụng DatabaseCaching 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 tới nhiều

hệ thống front-end2 giúp giảm tải công việc cho máy chủ cơ sở dữ liệu

• Tính linh hoạt: Đạt được chất lượng phục vụ (QoS3), kiểm soát bộ nhớcache, nơi lưu trữ các phần khác nhau của dữ liệu backend, ví dụ, dữ liệucủa khách hàng Platinum được lưu trữ trong khi dữ liệu của các khách hàngbì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à backendserver 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ả đã được lưu trữ

và giúp cân bằng tải

1 Ám chỉ công việc thao tác với hệ quản trị cơ sở dữ liệu

2 Hệ thống các giao diện người dùng (GUI)

3 Quality of Service

Trang 15

cơ sở dữ liệu (database) Và do đó các nhà phát triển của LiveJournal đã bắt đầu

sử dụng memcached như là biện pháp để làm tăng hiệu năng cho LiveJournal Saukhi cài đặt hoàn chỉnh memcached và đưa vào sử dụng, người ta đã thống kê đượcrằng: gần 95% các lần đọc dữ liệu được thực hiện trong memcached và các nút cổchai lớn nhất trong hệ thống đã được loại bỏ

Memcached là một hệ thống caching đối tượng trên bộ nhớ phân tán, là một

hệ thống mã nguồn mở, miễn phí, có hiệu năng cao được sử dụng để tăng tốc cácứng dụng Web động nhờ việc giảm tải sự truy cập đến cơ sở dữ liệu Chính vì lý

do này mà ngày nay Memcached được hầu hết các trang web có tính chia sẻ lớn

Trang 16

nhât thế giới đang sử dụng như Facebook, YouTube, Flickr, Twitter, Wikipedia,Mixi

Memcached là một máy chủ lưu trữ các cặp tên - giá trị (NVPs1) trong bộ nhớ.Giá trị trong cặp tên – giá trị có thể là bất cứ dữ liệu nào đó trong memcachednhư : các hàng của dữ liệu, các phân mảnh HTML, các giá trị nhị phân Chúng tabiết rằng tốc độ đọc dữ liệu từ bộ nhớ (SRAM, DRAM) là nhanh hơn rất nhiều

so với việc đọc dữ liệu từ đĩa cứng Vì vậy, việc nhận giá trị lưu trữ từ bộ nhớ làhiệu quả hơn nhiều so với lấy chúng từ ổ đĩa Memached được lưu trữ trong bộnhớ (RAM) và dĩ nhiên một ứng dụng sử dụng Memcached sẽ mang lại hiệu quảcao hơn rất nhiều so với việc không sử dụng nó

Hình 2.1: Mô hình hoạt động của MemcachedMemcached server lưu trữ các giá trị bằng môt khóa tra cứu (tên) trong bộnhớ Server sẽ tiến hành lưu trữ và nhận lại dữ liệu đã được lưu trữ là các NVPvới một khóa (key) Việc lưu và nhận lại dữ liệu theo key làm cho chương trình trởnên rất nhanh và rất đơn giản Điều hạn chế của việc làm này đấy là độ dài củakhóa không cho phép vượt quá 250 ký tự và kích thước của các phần dữ liệu đượclưu không vượt quá 1 MB Ngoài ra, mỗi máy chủ memcached là một phần tử độclập Nó không biết và cũng không quan tâm tới bất kỳ một máy chủ memcachednào khác, và việc nhận biết xem máy chủ nào chứa NVP đang được yêu cầu là

1 Name Value Pairs

Trang 17

nhiệm vụ của Client Vì vậy, chúng ta có thể thêm nhiều máy chủ nếu muốn đểđạt được hiệu quả mong muốn.

Do thời gian đọc dữ liệu từ Memcached nhanh hơn rất nhiều so với việc lấy

dữ liệu trực tiếp từ cơ sở dữ liệu (database) được lưu trên ổ cứng máy tính, điềunày cho phép server phân phối được nhiều trang web hơn so với lần nào cũng truyvấn tới cơ sở dữ liệu Memcached đơn giản nhưng thực sự mạnh mẽ Thiết kế đơngiản của nó thúc đẩy triển khai nhanh chóng, dễ dàng phát triển và giải quyếtnhiều vấn đề phải đối mặt với các lưu trữ dữ liệu lớn Hiện nay, API của nó đã

hộ trợ cho tất cả các ngôn ngữ phổ biến nhất như Perl, PHP, Python, Ruby, Java,.NET/C#, C Về cơ bản, việc triển khai Memcached cho một trang web là khá

dễ dàng, tuy nhiên đối với một số người lần đầu sử dụng Memcached, họ khôngnghĩ rằng sẽ dễ dàng triển khai Memcached lên trang web của họ

Về cơ bản, theo Patrick Galbraith [10] mô hình hoạt động của Memcached (Hình

2.1) tương đối giống với mô hình hoạt động của Data Caching (Hình 1.1)

2.1.2 Memcached làm được những gì?

Memcached cho phép bạn có một bộ nhớ kết hợp từ nhiều vùng nhớ khác nhaucủa hệ thống, đấy là những vùng nhớ có dung lượng trống nhiều hơn bạn cần vànhững vùng trống có dung lượng ít hơn bạn cần Memcached cũng cho phép bạntăng hiệu suất sử dụng bộ nhớ Hình 2.2 và 2.3 cho thấy hai ngữ cảnh khi triểnkhai:

Hình 2.2: Mô hình không sử dụng Memcached

Trang 18

Hình 2.3: Mô hình sử dụng Memcached

- Mỗi nút là hoàn toàn độc lập (Hình2.2)

- Mỗi nút có thể sử dụng bộ nhớ từ các nút khác (Hình 2.3)

Kịch bản đầu tiên minh họa cho chiến lược triển khai cổ điển, tuy nhiên bạn

sẽ thấy rằng nó là sẽ gây lãng phí trong trường hợp tổng kích thước bộ nhớ cachechỉ là một phần nhỏ so với kích thước bộ nhớ của máy chủ Web, nhưng vẫn phảigiữ vùng nhớ cần thiết cho từng nút

Với Memcached, bạn có thể thấy rằng tất cả các máy chủ đều tìm kiếm trongcùng một vùng nhớ ảo Điều này có nghĩa rằng một mục luôn luôn được lưu trữ

và nhận lại từ cùng một vị trí trong toàn bộ cụm máy chủ web của bạn

Sự khác biệt giữa hai mô hình được thể hiện một cách rõ ràng khi hệ thốngcủa bạn phát triển đến một mức nào đó và bạn cần phải có thêm nhiều server để

có thể đáp ứng được yêu cầu phát triển đó Giả sử nếu bạn có 50 máy chủ server,trong trường hợp không sử dụng Memcached, bạn vẫn chỉ có 64MB cache để sửdụng Còn với trường hợp bạn sử dụng Memcached, bạn sẽ có tới tận 3.2GB bộnhớ Cache để sử dụng

2.1.3 Memcached không dùng để làm gì?

Thứ nhất, Memcached không được dùng để lưu trữ những dữ liệu lâu dài và

ổn định Chúng ta không thể dùng truy vấn để lấy ra danh sách của tất cả các giátrị có trong Memcached Chỉ có duy nhất một cách để biết được dữ liệu có trongMemcached hay không đấy là truy vấn tới máy chủ và tìm nó Điều này được thiết

Trang 19

kế từ khi Memcached được tối ưu hóa cho một máy chủ lưu trữ tạm thời chứ khôngphải là một máy chủ lưu trữ dữ liệu lâu dài.

Thứ hai, trong Memcached không có cơ chế bảo mật Các máy chủ Memcachedhoàn toàn không có mô hình chứng thực Bất kỳ ai cũng có thể kết nối tới máy chủthông qua cổng TCP hoặc UDP để lấy dữ liệu Đây hoàn toàn là do thiết kế cómục đích, bởi vì quá trình chứng thực sẽ làm chậm đi đáng kể quá trình xử lý dữliệu Nhưng điều đó không có nghĩa rằng Memcached không có tính bảo mật Cómột số phương pháp làm tăng độ bảo mật cho Memcached mà không làm chậm điquá trình xử lý dữ liệu Cách thứ nhất là giới hạn truy cập tới máy chủ Các cổngđang hoạt động trên Memcached nên chặn những truy cập từ bên ngoài Cách thứhai đấy là xáo trộn các khóa của bạn Với cách này, bất cứ ai có thể truy cập đượctới máy chủ nhưng không phải dễ dàng có thể tìm được dữ liệu Một số Client đãđược xử lý điều này bằng cách băm khóa của bạn hoặc nén dữ liệu, vì vậy khôngphải dễ dàng một ai đó có thể đọc được

Cách tốt nhất là giới hạn truy cập tới máy chủ Memcached, giới hạn cổng các máyyêu cầu truy cập Điều này có thể được thực hiện bằng cách sử dụng định tuyến(routing) và tường lửa (firewall) để cho phép hoặc không cho phép truy cập tới cáccổng xác định bởi IP Address hoặc IP Range Việc triển khai cụ thể các phươngpháp này là điều vượt ra ngoài phạm vi của tài liệu này

Cuối cùng, Memcached không hỗ trợ các cơ chế fail-over/high-availability2 Nếunhư máy chủ Memcached bị hỏng và ngừng hoạt động thì toàn bộ dữ liệu cũng sẽ

bị mất Nhưng điều đó không phải là một vấn đề quan trọng, bởi vì Memcached

là một bộ nhớ tạm thời, không phải là bộ nhớ lưu trữ những dữ liệu gốc Nhữngtruy vấn liên quan tới dữ liệu đã mất hoàn toàn có thể tìm thấy trong cơ sở dữliệu gốc

2.2 Giới thiệu về built-in caching MySQL

MySQL có một tính năng tuyệt vời được gọi là "Query Cache", nó rất hữu íchcho công việc tối ưu hóa hiệu suất của MySQL Khi cơ sở dữ liệu của bạn lớn và

số lượng các truy cập tới cơ sở dữ liệu tại cùng một thời điểm là cao, chắc chắnMySQL sẽ chiếm rất nhiều tài nguyên và khiến tải của server lớn Để giảm tải choserver, chúng ta có thể cache lại kết quả của các lần truy vấn vào bộ nhớ RAM

2 Cơ chế dự phòng lỗi và khả năng sẵn sàng cao

Trang 20

Tính năng này [15] được MySQL hỗ trợ từ phiên bản 4.0.1 trở lên Mặc định tínhnăng này sẽ không được kích hoạt Chi tiết làm thế nào để kích hoạt tính năngnày và một số thông số cấu hình sẽ được trình bày chi tiết trong mục 3.1.

Trang 21

Chương 3

Nghiên cứu cài đặt, sử dụng

memcached và built-in caching

và cài đặt memcached

1 Cài đặt Libevent

Memcached sử dụng libevent API2 Libevent cung cấp một cơ chế để thựcthi tính năng gọi lại khi có một sự kiện xác định nào đó xảy ra Có thể trênmáy tính của bạn đã được cài đặt libevent trước đó, nhưng bạn cần ít nhất

1 GNU’s Not Unix

2 Application Programming Interface

Trang 22

là phiên bản libevent 1.3 Sau đây, chúng ta sẽ tải phiên bản libevent 1.3 vàtiến hành cài đặt nó:

/usr/local/lib/

2 Cài đặt Memcached

Sau khi libevent được cài đặt, chúng ta có thể vào trang chủ của memcachedtại http://memcached.org để tải về phiên bản mới nhất của nó Trong tài liệunày tôi dùng memcached phiên bản 1.4.13 là phiên bản mới nhất Sau đây,chúng ta sẽ đi tải và cài đặt memcached:

cd /usr/local/src

wget http://memcached.googlecode.com/files/memcached-1.4.13.tar.gztar zxvf memcached-1.4.13.tar.gz

sẽ tự động chạy mỗi khi máy chủ của bạn khởi động lại

3 Cấu hình memcached

Chúng ta có thể dùng tham số dòng lệnh để tùy chỉnh các thông số cài đặtcho máy chủ memcached Ba tham số chính chúng ta cần lưu lý đấy là -p,

Trang 23

-m và -d Để khởi động memcached với một số tùy chọn, chúng ta dùng lệnhsau:

ps -ef | grep memcached

Hình 3.1: Một số tùy chọn của memcached

Trang 24

Mặc định, memcached sẽ có bộ nhớ là 64 MB và lắng nghe trên cổng 11211.

Chúng ta có thể thay đổi cổng lắng nghe của memcached với tham số -p

và liền sau là cổng mà chúng ta muốn thay đổi trong lệnh khởi động

mem-cached ở trên Tương tự nếu như chúng ta muốn thay đổi độ lớn của bộ

nhớ memcached với tham số -m Sau tham số -l là địa chỉ máy chủ web mà

chúng ta muốn sử dụng memcached Trong tài liệu này chúng ta sẽ triển khai

memcached trên localhost Cuối cùng, tham số -d sẽ chạy memcached như

một daemon Nếu máy tính của bạn có nhiều bộ vi xử lý hoặc dung lượng

bộ nhớ RAM lớn, bạn có thể cài đặt để chạy nhiều phiên memcached trên

nhiều server web với các vùng bộ nhớ khác nhau

Bạn có thể xem danh sách các tham số một cách đầy đủ bằng lệnh memached

-h (xem Hình 3.1) Bạn cũng có thể tìm thêm thông tin hướng dẫn cách dùng

các tham số khác trên trang web memcached (http://www.danga.com/memcached/ )

3.1.2 Thao tác với dữ liệu dùng telnet

1 Một số thao tác cơ bản với dữ liệu

Memcached chỉ có bốn lệnh cơ bản liên quan đến lưu trữ và nhận dữ liệu

Trong phần này, chúng ta sẽ lần lượt tìm hiểu từng lệnh một xem cách thức

mà chúng làm việc như thế nào Tương tác với máy chủ thông thường diễn

ra trên một kết nối TCP hoặc UDP Vì thế, chúng ta có thể dùng telnet3

để tương tác với máy chủ và thực hiện một số lệnh cơ bản Bây giờ, chúng

ta sẽ tìm hiểu việc dùng telnet để lưu trữ và nhận dữ liệu bằng bốn lệnh cơ

bản mà chúng ta đã nói tới ở trên Khi chúng ta thực hiện lưu trữ thông tin

gì đó vào trong cache, chúng ta sẽ nhận được một trong hai thông báo xác

nhận: STORED - tức thông tin đã được lưu trữ thành công vào cache, hoặc

NOT_STORED - tức thông tin lưu trữ chưa thành công

Sau đây, chúng ta sẽ đi tìm hiểu về bốn lệnh cơ bản hay sử dụng trong

memcached:

• SET: Thêm một mục mới vào memcached hoặc nếu mục thêm vào đã

tồn tại thì dữ liệu sẽ được thay thế bằng dữ liệu mới

3 TErminaL NETwork: là một chương trình truy cập máy tính từ xa dùng dòng lệnh

Trang 26

và khóa test3 Tuy nhiên chỉ khóa test1 đã tồn tại trong memcached,máy chủ sẽ thực hiện thay thế dữ liệu cũ và lưu trữ dữ liệu mới chokhóa này và nó không lưu trữ bất kỳ dữ liệu nào cho khóa test3 vì khóanày không tồn tại trong khi lệnh replace yêu cầu khóa phải tồn tại.

Khi chúng ta dùng lệnh get, memcached sẽ trả về hai dòng dữ liệu.Dòng thứ nhất được bắt đầu với từ khóa VALUE, nó cho biết đó là giá trịđược trả về Giá trị đầu tiên là từ khóa được yêu cầu, tiếp theo là giátrị trường cờ (flag) và cuối cùng là số byte memcached trả về Dòng thứhai là từ khóa END - thông báo dữ liệu trả về đã hoàn thành Nếu chúng

ta sử dụng lệnh get với khóa không tồn tại, như test3, thì sẽ không cóbất kỳ dữ liệu nào được trả về, khi đó memcached trả về từ khóa ENDxuất hiện ở dòng đầu tiên Nếu chúng ta muốn get nhiều khóa trongcùng một yêu cầu (request) thì mỗi từ khóa cách nhau một dấu cách.Khi đó, chúng ta chỉ nhận được thông tin của những khóa có dữ liệu.Nếu tất cả từ khóa chúng ta get đều không có dữ liệu, thì chúng ta sẽnhận được thông báo END

Ngoài bốn lệnh cơ bản trên, memcached còn cung cấp một số lệnh khác.Sau đây, chúng ta hãy cùng tìm hiểu qua về chúng:

• DELETE: Lệnh này sẽ xóa bỏ một giá trị được lưu trữ theo khóa củachúng Chúng ta sẽ tìm hiểu kỹ hơn về lệnh này trong mục 2 Xóa dữliệu từ memcached

• INCR: Tăng trường khóa lên một giá trị Chúng ta có thể sử dụng nó

Trang 27

như một hàng đợi hoặc như một biến đếm.

• DECR: Giảm trường khóa xuống một giá trị Chúng ta có thể sử dụng

nó như một hàng đợi hoặc như một biến đếm

• STATS: Trả về các thông số trạng thái của máy chủ memcached.Chúng ta hãy tìm hiểu thêm một chút về lệnh INCR (Increment) và DECR(Decrement) thông qua ví dụ sau: Trên một trang web mà chúng ta triểnkhai memcached, chúng ta tiến hành lưu trữ một số kiểu dữ liệu khác nhautrong bộ nhớ cache Khi chúng ta thiết lập một trường cờ gỡ lỗi, nó sẽ bắtđầu sử dụng INCR trên hai khóa cho mỗi loại dữ liệu, một cho cache hits vàmột cho cache misses Điều này giúp chúng ta truy vấn tới bộ nhớ cache theođịnh kỳ để xem các kiểu dữ liệu cụ thể được lưu trữ như thế nào và nó cóthể cảnh báo trước cho chúng ta nơi mà có vấn đề gì đó xảy ra liên quan tới

dữ liệu Nhờ vậy mà chúng ta có thể kiểm soát được tốt hơn một số rủi ro

có thể xảy đến với dữ liệu trong memcached

Một nhược điểm của INCR và DECR là chúng yêu cầu NVP phải đã tồn tạitrước khi sử dụng Nếu chúng ta sử dụng chúng với một giá trị không tồntại, chúng ta sẽ nhận được thông báo ERROR Cấu trúc của lệnh này là:INCR/DECR key value

2 Xóa dữ liệu từ memcached

Có một cách để chúng ta có thể xóa bỏ dữ liệu từ memcached đó là chúng

ta dùng lệnh delete Cú pháp của lệnh delete rất đơn giản: delete key.Trong khi telnet tới máy chủ memcached, chúng ta có thể đánh lệnh sau đểxóa bỏ dữ liệu mà chúng ta muốn theo key của dữ liệu đó Ví dụ:

có thể làm việc tốt hơn, các chỉ mục sẽ không bị xóa khỏi bộ nhớ cho tới khi

bộ nhớ bị đầy và cần thêm không gian nhớ Việc làm này hiệu quả hơn rấtnhiều so với việc đi lần lượt qua từng chỉ mục một trong bộ nhớ và xóa bỏ

Trang 28

chúng Điều này làm tốn rất nhiều thời gian Khi memcached cần bộ nhớ đểlưu những đối tượng mới mà không có những vùng nhớ đã hết hiệu lực hoặcnhững vùng nhớ đã bị xóa trước đó để sử dụng lại, khi đó memcached sẽ sửdụng thuật toán Least Recently Used (LRU) để xóa bỏ những chỉ mục ítđược sử dụng gần đây nhất, có nghĩa là những chỉ mục đã không được sửdụng lại trong thời gian dài nhất trong bộ nhớ và không có giá trị lưu trữlâu dài trong memcached, tức những chỉ mục có tần suất sử dụng thấp.

3.1.3 Một số lựa chọn lưu trữ dữ liệu

Trong phần này, chúng ta hãy cùng tìm hiểu về một số thông số được dùngtrong các lệnh lưu trữ, thao tác mà chúng ta đã biết trong các phần trước Với cáclệnh cơ bản set, add và replace mà chúng ta đã biết đều có bốn thông số cơ bản

mà chúng ta sẽ lần lượt xem xét sau đây:

• keyname: là khóa của các cặp tên giá trị, bất kỳ dữ liệu nào khi được thêmvào memcached sẽ được cấp một khóa tương tứng với dữ liệu đó Và khichúng ta lấy lại dữ liệu từ memcached sẽ dựa vào trường khóa này

• flag: là một số nguyên đi kèm với khóa Nó được dùng khi client muốn lưutrữ một số thông tin về khóa

• expiration time: Nếu tham số này được đặt là 0 thì đối tượng được lưu sẽkhông bao giờ bị xóa khi bộ nhớ vẫn còn trống hoặc người không dùng lệnhdelete Thời gian mà một đối tượng có thể được lưu trữ là 1 − 2, 592, 0003giây

• bytes: Số byte được lưu trữ

Trong các ví dự trước, chúng ta đã đặt các tham số flag và expiration time

là 0, tức là dữ liệu lưu trữ sẽ không bị mất nếu bộ nhớ chưa đầy Ví dụ sau đâychúng ta sẽ thiết lập thời gian hết hạn cho dữ liệu bằng cách đặt giá trị cho tham

số expiration time Trong ví dụ, chúng ta thiết lập thời gian hết hạn cho dữ liệu

là 10 giây Sau khi lưu trữ dữ liệu bạn có thể kiểm tra bằng cách dùng lệnh gettrong thời gian 10 giây đầu và sau 10 giây để xem sự khác biệt

set test1 0 10 10

testing001

Trang 29

Ngoài các tham số lựa chọn trên, chúng ta còn có một tham số lựa chọn nữa đó

là noreply Với lựa chọn này, memcached sẽ không trả về các thông báo STOREDhoặc NOT_STORED Điều này sẽ giúp memcached xử lý được nhiều yêu cầu hơn do đãbớt đi được một thông điệp xác nhận Tuy vậy, khi có một yêu cầu tới memcached

sẽ xảy ra một trong hai trường hợp: dữ liệu được yêu cầu có hoặc không có trongmemcached Trường hợp dữ liệu không có trong memcached có thể là dữ liệu đó

đã hết thời hạn được lưu trữ hoặc nó đã được xóa bởi người quản trị, cũng có thể

là nó đã bị xóa khi bộ nhớ đầy và cần thêm không gian nhớ cho dữ liệu mới hoặc

có thể dữ liệu đó chưa bao giờ được lưu vào memcached Một số chương trình sửdụng memcached không thực sự quan tâm tới việc tại sao dữ liệu lại không cótrong memcached, nó chỉ cần có dữ liệu được trả về Nhưng cũng có những trườnghợp, chương trình cần biết xem dữ liệu đã được lưu trữ thành công hay chưa Vìthế mà tham số noreply thường không được sử dụng

3.1.4 Thao tác với dữ liệu dùng một thư viện memcached

Client

Trong phần trước, chúng ta đã đi tìm hiểu về làm thế nào để cài đặt và tươngtác với memcached sử dụng một telnet client Tuy nhiên, trong thực tế, việc sửdụng một telnet client để tương tác với máy chủ memcached là một việc khôngmấy thực tế Trong khi chúng ta hoàn toàn có thể viết mã chương trình của chínhmình sử dụng TCP hoặc UDP để tương tác với máy chủ Chúng ta may mắn là đã

có rất nhiều mã chương trình thực hiện điều này, và có rất nhiều thư viện trìnhkhách mà chúng ta có thể sử dụng để lập trình chương trình tương tác với máychủ Danh sách bao gồm:

Trang 30

3.1.5 Cài đặt memcached Linux client

Có một số trình khách sẵn có để sử dụng trên hệ thống Linux Trong tài liệunày, chúng ta sẽ đi cài đặt trình khách Perl memcached, nó sẵn có trên CPAN(Comprehensive Perl Archive Network) Để cài đặt nó, chúng ta cần phải đăngnhập vào hệ thống Linux như một siêu người dùng (super-user) và chắc chắn rằngPerl đã được cài đặt trên hệ thống Chúng ta mở terminal và đánh dòng lệnh sau:perl -MCPAN -e shell

Khi bạn đang ở dấu nhắc lệnh CPAN, đánh Cache::Memcached Khi CPAN hoànthành việc cài đặt và tạo module, bạn có thể thoát ra và bây giờ bạn đã thực sựsẵn sàng để dùng memcached

Bây giờ, chúng ta sẽ tìm hiểu việc dùng Perl Client như thế nào Bước đầu tiên

để sử dụng memcached Perl client, chúng ta khai báo: use Cache::Memcached.Tiếp theo, chúng ta định nghĩa danh sách các server sẽ dùng Dòng thứ 6 trongđoạn code bên dưới định nghĩa server mà chương trình Perl sẽ dùng, định dạngcủa khai báo này là Server:PortNumber Sau đó chúng ta thực hiện tải dữ liệu.Chúng ta có thể định nghĩa để sử dụng một hoặc nhiều server Trong trường hợpdùng nhiều server thì mỗi server được khai báo phân cách nhau bằng dấu ","

#memcachedHashTest.pl

#!/usr/bin/perl

Trang 31

use Cache::Memcached;

# Set the server list up

my $memd = new Cache::Memcached {’servers’ => [ "127.0.0.1:11211"],};

#flush the servers to remove any unwanted data before testing

$memd->set(Name, Value);

Trong ví dụ này, chúng ta đã thực hiện lưu trữ dữ liệu vào memcached, bây giờchúng ta hãy lấy lại nó Có hai cách để nhận lại dữ liệu từ memcached dùng Perlclient Cách thứ nhất, chúng ta có thể dùng get để nhận lại dữ liệu Đoạn mã sau

sẽ thực hiện lấy dữ liệu có khóa 73EB7DE0-9452-4607-AAFC-8F7B625E75A3 trongmemcached và in ra kết quả

Trang 32

Cách thứ hai để lấy lại dữ liệu dùng Perl client là sử dụng multi-get Perl clientcho phép chúng ta sử dụng hàm get_multi bằng cách đi qua một mảng các khóa

để tìm kiếm

#memcachedHashGetMulti.pl

#!/usr/bin/perl

use Cache::Memcached;

# Set the server list up

my $memd = new Cache::Memcached {’servers’ => [ "127.0.0.1:11211"],};

print $arrayref," = ", $hashref->{$arrayref},"\n";}

else {print $arrayref," DOES NOT EXIST!\n";}

}

Những lợi ích của việc sử dụng một Client

Ngoài việc đóng gói những truy cập của chúng ta tới memcached, một client còn

Trang 33

cung cấp một số lợi ích sau:

• Nó sử dụng một thuật toán băm để xác định máy chủ NVP sẽ lưu trữ dữliệu hoặc nhận dữ liệu từ máy chủ đó

• Nó có thể cung cấp khả năng nén dữ liệu để chúng ta có thể lưu trữ NVPsvới kích thước vượt quá 1MB

3.2 Cài đặt và sử dụng built-in caching MySQL

3.2.1 Cài đặt Query Cache cho MySQL

Bản 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]

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

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1] Baron Schwartz, Peter Zaitsev, Vadim Tkachenko,Jeremy D. Zawodny, Arjen Lentz, and Derek J. Balling, High Performance MySQL, O’Reilly Media, Inc., 1005 Gravenstein Highway North, Sebastopol, CA 95472, Second Edition, June 2008, pp. 164, 204-216, 463-469, 561-562 Sách, tạp chí
Tiêu đề: High Performance MySQL
Tác giả: Baron Schwartz, Peter Zaitsev, Vadim Tkachenko, Jeremy D. Zawodny, Arjen Lentz, Derek J. Balling
Nhà XB: O’Reilly Media, Inc.
Năm: 2008
[2] Bivas Das and Eric Freudenthal, "Reliable and fault tolerant distributed caching using memcached", 7th Joint NMSU/UTEP Workshop on Mathemat- ics, Computer Science, and Computational Sciences, March 20, 2010 Sách, tạp chí
Tiêu đề: Reliable and fault tolerant distributed caching using memcached
Tác giả: Bivas Das, Eric Freudenthal
Nhà XB: 7th Joint NMSU/UTEP Workshop on Mathematics, Computer Science, and Computational Sciences
Năm: 2010
[3] Brad Fitzpatrick, "Distribued caching with memcached". Linux Journal, Vol 2004 Issue 124, August 2004, pp. 5 Sách, tạp chí
Tiêu đề: Distribued caching with memcached
[4] Charles Bell, Mats Kindahl, and Lars Thalmann, MySQL High Availability, O’Reilly Media, Inc., 1005 Gravenstein Highway North, Sebastopol, CA 95472, First Edition, July 2010, pp. 292-318 Sách, tạp chí
Tiêu đề: MySQL High Availability
Tác giả: Charles Bell, Mats Kindahl, Lars Thalmann
Nhà XB: O’Reilly Media, Inc.
Năm: 2010
[5] H. K. Mehta, P. Kanungo, M. Chandwani, "Distributed database caching for web applications and web services", Proceeding ICWET ´ 11 Proceedings of the International Conference & Workshop on Emerging Trends in Technology, 2011, pp. 510-515 Sách, tạp chí
Tiêu đề: Distributed database caching for web applications and web services
Tác giả: H. K. Mehta, P. Kanungo, M. Chandwani
Nhà XB: Proceeding ICWET ´ 11 Proceedings of the International Conference & Workshop on Emerging Trends in Technology
Năm: 2011
[6] Ivan Voras, Danko Basch and Mario ˇ Zagar, "A High Performance Memory Database for Web Application Caches", Electrotechnical Conference, 2008.MELECON 2008. The 14th IEEE Mediterranean, May,2008, pp. 163 - 168 Sách, tạp chí
Tiêu đề: A High Performance Memory Database for Web Application Caches
Tác giả: Ivan Voras, Danko Basch, Mario Zagar
Nhà XB: Electrotechnical Conference, 2008.MELECON 2008. The 14th IEEE Mediterranean
Năm: 2008
[7] Jithin Jose, Hari Subramoni, Miao Luo, Minjia Zhang, Jian Huang, Md. Wasi- ur-Rahman, Nusrat S. Islam, Xiangyong Ouyang, Hao Wang, Sayantan Sur, Dhabaleswar K. Panda, "Memcached Design on High Performance RDMA Capable Interconnects", Proceeding ICPP ’11 Proceedings of the 2011 Inter- national Conference on Parallel Processing, September, 2011, pp. 743 - 752 Sách, tạp chí
Tiêu đề: Memcached Design on High Performance RDMA Capable Interconnects
Tác giả: Jithin Jose, Hari Subramoni, Miao Luo, Minjia Zhang, Jian Huang, Md. Wasi- ur-Rahman, Nusrat S. Islam, Xiangyong Ouyang, Hao Wang, Sayantan Sur, Dhabaleswar K. Panda
Nhà XB: Proceeding ICPP ’11 Proceedings of the 2011 International Conference on Parallel Processing
Năm: 2011
[9] Qiong Luo, Sailesh Krishnamurthy, C. Mohan, Hamid Pirahesh, Honguk Woo, Bruce G. Lindsay, Jeffrey F. Naughton, "Middle-Tier Database Caching for e-Business", Proceeding SIGMOD ’02 Proceedings of the 2002 ACM SIGMOD international conference on Management of data, pp. 600-611 Sách, tạp chí
Tiêu đề: Middle-Tier Database Caching for e-Business
Tác giả: Qiong Luo, Sailesh Krishnamurthy, C. Mohan, Hamid Pirahesh, Honguk Woo, Bruce G. Lindsay, Jeffrey F. Naughton
Nhà XB: Proceeding SIGMOD ’02
Năm: 2002
[11] Sara Bouchenak, Alan Cox, Steven Dropsho, Sumit Mittal, Willy Zwaenepoel,"Caching Dynamic Web Content: Designing and Analysing an Aspect- Oriented Solution", Proceeding Middleware’06 Proceedings of the 7th ACM/IFIP/USENIX international conference on Middleware, 2006, pp. 1-21 Sách, tạp chí
Tiêu đề: Caching Dynamic Web Content: Designing and Analysing an Aspect- Oriented Solution
Tác giả: Sara Bouchenak, Alan Cox, Steven Dropsho, Sumit Mittal, Willy Zwaenepoel
Nhà XB: Proceeding Middleware’06
Năm: 2006
[13] Trevor James, TJ Holowaychuk, Drupal 6 Performance Tips, ackt Publishing Ltd. 32 Lincoln Road Olton Birmingham, B27 6PA, UK, pp. 169-182 Sách, tạp chí
Tiêu đề: Drupal 6 Performance Tips
Tác giả: Trevor James, TJ Holowaychuk
Nhà XB: ackt Publishing Ltd.
[14] Vikram Vaswani, MySQL: The Complete Reference, The McGraw-Hill Com- panies, Inc. (“McGrawHill”), 2004, pp. 371-388 Sách, tạp chí
Tiêu đề: McGrawHill
[8] Josef Finsel, Using Memcached, Pragmatic Bookshelf at http://pragprog.com/book/memcd/using-memcached,2008,pp.1-30,58-65 Link
[10] Patrick Galbraith, Developing Web Applications with Perl, memcached, MySQL and Apache, JWiley Publishing, Inc. 10475 Crosspoint Boule, 2009, pp. 347-392 Khác
[12] Sheeri K. Cabral and Keith Murphy MySQL Administrator’s Bible, Wiley Publishing, Inc. 10475 Crosspoint Boulevard Indianapolis, IN 46256, 2009, pp. 423-438 Khác

HÌNH ẢNH LIÊN QUAN

Hình 1.1: Mô hình cơ bản của Data Caching - 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
Hình 1.1 Mô hình cơ bản của Data Caching (Trang 13)
Hình 2.1: Mô hình hoạt động của Memcached - 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
Hình 2.1 Mô hình hoạt động của Memcached (Trang 16)
Hình 2.2: Mô hình không sử dụng Memcached - 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
Hình 2.2 Mô hình không sử dụng Memcached (Trang 17)
Hình 2.3: Mô hình sử dụng Memcached - 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
Hình 2.3 Mô hình sử dụng Memcached (Trang 18)
Hình 3.1: Một số tùy chọn của memcached - 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
Hình 3.1 Một số tùy chọn của memcached (Trang 23)
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] - 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
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] (Trang 33)
Hình 3.3: Quá trình cấp phát các khối trong bộ nhớ để lưu trữ dữ 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
Hình 3.3 Quá trình cấp phát các khối trong bộ nhớ để lưu trữ dữ liệu (Trang 35)
Hình 3.4: Danh sách các biến trạng thái của Query Cache tính được tỷ lệ phần trăm cache hit, cache miss - 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
Hình 3.4 Danh sách các biến trạng thái của Query Cache tính được tỷ lệ phần trăm cache hit, cache miss (Trang 36)
Hình 3.5: Nguyên nhân phân mảnh khi cấp phát bộ nhớ - 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
Hình 3.5 Nguyên nhân phân mảnh khi cấp phát bộ nhớ (Trang 38)
Hình 4.1: Màn hình đăng nhập vào phpMyAdmin Đăng nhập với tài khoản root (Hình 4.1). Tạo cơ sở dữ liệu có tên drupal (Hình 4.2) - 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
Hình 4.1 Màn hình đăng nhập vào phpMyAdmin Đăng nhập với tài khoản root (Hình 4.1). Tạo cơ sở dữ liệu có tên drupal (Hình 4.2) (Trang 41)
Hình 4.5: Một số yêu cầu cài đặt - 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
Hình 4.5 Một số yêu cầu cài đặt (Trang 43)
Hình 4.6: Cấu hình cơ sở dữ liệu Chọn Save and continue. Tiến trình cài đặt được bắt đầu (Hình 4.7) - 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
Hình 4.6 Cấu hình cơ sở dữ liệu Chọn Save and continue. Tiến trình cài đặt được bắt đầu (Hình 4.7) (Trang 44)
Hình 4.7: Tiến trình cài đặt - 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
Hình 4.7 Tiến trình cài đặt (Trang 44)
Hình 4.8: Thông tin về trang web Thiết lập thông tin admin (Hình 4.9) - 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
Hình 4.8 Thông tin về trang web Thiết lập thông tin admin (Hình 4.9) (Trang 45)
Hình 4.10: Thiết lập múi giờ - 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
Hình 4.10 Thiết lập múi giờ (Trang 46)

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm