2013-04-16 49 views
18

Tôi đã xuất bản trang web của mình trên Amazon EC2 (khu vực Singapore) và tôi đã sử dụng cá thể MySQL RDS để lưu trữ dữ liệu. Mọi thứ đều hoạt động rất tốt ngoại trừ hiệu suất.Ví dụ về Amazon RDS MySQL thực hiện rất chậm

Tôi có vẻ như, tất cả các truy vấn của tôi, tuyên bố chọn đặc biệt, đang hoạt động rất chậm. Nếu tôi kiểm tra vấn đề này trên máy tính cục bộ của tôi, nó sẽ hoạt động rất tốt. Nhưng khi tôi đang cố gắng lấy dữ liệu từ thể hiện RDS, nó rất chậm. Một số câu lệnh chọn mất 2-3 giây để tìm nạp dữ liệu.

Tôi đã điều chỉnh đúng tất cả các chỉ mục bảng và chuẩn hóa/khử chuẩn theo yêu cầu. Tôi đã thực hiện tất cả các cài đặt cần thiết trên nhóm thông số tùy chỉnh RDS (ví dụ: max_connection, buffer v.v.). Tôi không biết nếu tôi đang thiếu một cái gì đó, nhưng nó đã không làm việc cho tôi - hiệu suất không tăng lên.

Vì vậy, ai đó có thể giúp tôi với vấn đề này? tỷ lệ

+0

Chỉ để hiểu ... Ví dụ bạn đang sử dụng? –

+0

Tôi có cùng một vấn đề. Tôi đã thử thiết lập RDS với một Digital Ocean - tải trang (dựa trên DB) đã đi từ mức trung bình 1,8 giây đến 5,9 giây. Vì vậy, tái tạo toàn bộ thiết lập trong EC2 & RDS trong cùng một vùng/cụm và cùng múi giờ. Tôi cũng thiết lập bộ nhớ đệm. –

Trả lời

2

hiệu suất RDS MySQL có thể tăng lên theo những cách sau đây giả sử hệ thống đã đọc thêm:

P1) Sử dụng các loại dụ lớn hơn, họ đến với băng thông NW tốt hơn. Ví dụ AWS Quadrapule EXL đi kèm với băng thông 1000Mbps.

P2) Sử dụng PIOPS lưu trữ mà bạn có thể trích xuất 12500 IOPS của 16KB từ MySQL DB

P3) Nếu nhiều đọc được thực hiện, thêm một hoặc nhiều đọc Replica để tăng hiệu suất đọc

P4) Áp dụng tiêu chuẩn thực hành như: Điều chỉnh các truy vấn, áp dụng các chỉ mục vv

6

Điều quan trọng là phải có các trường hợp RDS và EC2 của bạn không nằm trong cùng một vùng nhưng trong cùng vùng khả dụng để giảm thiểu độ trễ.

Tôi đã có API được lưu trữ ở Ireland trên EC2 và đã chuyển Cơ sở dữ liệu sang cụm MySQL ở Virginia USA mà chúng tôi đã thiết lập cho một dự án khác và chuyến đi vòng trên mỗi truy vấn SQL khiến API không sử dụng được.

+5

Có RDS và EC2 trên cùng một vùng trống có nghĩa là chúng nằm trên cùng một khu vực – dvdvck

+1

bạn vừa thực hiện tháng –

25

Cần lưu ý rằng, vì lý do gì, bộ nhớ cache truy vấn MySQL được TẮT theo mặc định trong RDS. Chúng tôi đã học được cách khó khăn trong tuần này.

Điều này sẽ không giúp thực hiện truy vấn ban đầu của bạn, nhưng nó có thể tăng tốc độ nói chung.

Để kích hoạt lại bộ nhớ cache truy vấn:

  1. Đăng nhập vào RDS Bảng điều khiển
  2. Bấm vào dụ RDS bạn để xem nó là chi tiết
  3. Chỉnh sửa cơ sở dữ liệu Parameter Nhóm
  4. Hãy chắc chắn để thiết lập cả hai query_cache_sizequery_cache_type

(Tuyên bố từ chối trách nhiệm: Tôi không phải là DBA để có thể bổ sung điều NAL Tôi đang mất tích ở đây)

+1

Đối với các bảng InnoDB, bạn nên giữ nó ở trạng thái OFF. Tham chiếu: https://serverfault.com/questions/604315/is-enabling-mysql-query-cache-size-innodb-lock-safe –

2

Đầu tiên tôi khuyên bạn nên xem qua các truy vấn sử dụng

HIỂN THỊ ĐẦY ĐỦ processlist

Bạn có thể đọc thêm về nó trên SHOW FULL PROCESSLIST

này sẽ hiển thị cho bạn thời gian mỗi truy vấn thực hiện.

Sau đó, bạn có thể sử dụng

GIẢI THÍCH

Bạn có thể đọc thêm về nó trên EXPLAIN

này sẽ cho bạn nếu bạn cần một số cải tiến trên các truy vấn của bạn

0

tôi có cùng một vấn đề. Tôi nghĩ vấn đề là MariaDB và MySQL đều là mặc định cho InnoDB thay vì MyISAM! (Không thể chịu đựng được gì về InnoDB). Thử nghiệm ban đầu cho thấy cải thiện 15x cho các truy vấn của tôi.

0

Bạn có thể kiểm tra xem truy vấn đang mất thời gian bằng cách sử dụng lược tả. Sử dụng các truy vấn dưới đây:

  1. bộ hồ sơ = 1
  2. thực hiện chọn truy vấn của bạn
  3. chương trình hồ sơ

Điều này sẽ cho bạn biết về tình trạng của các truy vấn và hợp truy vấn được chi tiêu của mình thời gian. Nếu tổng của tất cả thời gian được trả về bởi lược tả nhỏ hơn thời gian thực hiện của truy vấn, thì có thể các yếu tố khác như băng thông Mạng có thể là nguyên nhân của nó.

0

Đối với tôi, nó không liên quan gì đến MySQL mà là kiểu cá thể tôi đã có trên t2.medium. Vấn đề là tôi chạy ra khỏi các khoản tín dụng CPU vì tải trên DB quá cao và số dư tiếp tục đi xuống cho đến khi cuối cùng, tôi đã nhận được ít hơn các khoản tín dụng hàng giờ sau đó khi cần thiết.

Dưới đây là những gì tôi đã thấy trong RDS CloudWatch dưới Cách sử dụng tín dụng CPU:

enter image description here

Nếu bạn có cùng một vấn đề có thể là thời gian để chuyển sang một trường hợp khác nhau.Dưới đây là danh sách các loại Ví dụ:

https://aws.amazon.com/rds/instance-types/

Hope this helps.