banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Forum Index Thảo luận hệ điều hành *nix Cấu hình Mysql sever sao cho đúng ?  XML
  [Question]   Cấu hình Mysql sever sao cho đúng ? 25/01/2007 13:14:07 (+0700) | #1 | 38062
[Avatar]
BachDuongTM
Member

[Minus]    0    [Plus]
Joined: 29/06/2006 17:39:39
Messages: 85
Offline
[Profile] [PM] [Email]
:cry: :cry:
xin chào mọi người
hiện tại mình đang có vướng mắc mong mọi người giúp đỡ.

trước đây mình có chạy một Mysql sever với 1 database duy nhất dung lượng khoảng 1,5G <1 forum> sử dụng bản mysql-3.0 thì mọi việc đều bình thường.Thời gian load cho 1 page trung bình 3-4 s <khá nhanh>

nhưng từ khi mình chuyển qua build bản mysql 5.0 thì trục trặc xảy ra.Trước hết là kô thể kết nối do code cũ ,may mà sửa nhanh chóng.Bây giờ thì xảy ra hiện tượng như mọi người gọi là cái cổ chai ấy.Mysql tốn rất nhiều tài nguyên CPU của hệ thống mà làm việc có vẻ ỳ ạch chứ kô nhanh chóng như trước.Việc duyệt web vì thế nên chậm đi hẳn ,mình đã thử khắc phục nhiều cách nhưng kô thay đổi nhiều.


tối ưu Mysql là một việc vô cùng khó khăn mà ít người nói đến,đâu chỉ là việc cp file my.cnf vào thư mục /etc và chạy mysql lên là ổn.Vì vậy mong mọi người những ai đã có nhiều kinh nghiệm về vấn đề này có thể chia sẻ với mọi người,đôi khi một câu nói cũng có thể tìm ra chân lý.

theo ý kiến chủ quan của mình thì mình muốn lắng nghe những kinh nghiệm của mọi người ,và nếu cần thì mình sẽ post cấu hình sever của mình lên <thực sự chưa muốn đưa lên để mọi người chỉnh giúp - nghe giống ăn sẵn quá ,kiểu click and see ...>

nếu vấn đề quá rộng thì chúng ta có thể thu hẹp lại <trong cấu hình sever mình chăng > smilie smilie

[Up] [Print Copy]
  [Question]   Cấu hình Mysql sever sao cho đúng ? 25/01/2007 19:10:35 (+0700) | #2 | 38096
[Avatar]
conmale
Administrator

Joined: 07/05/2004 23:43:15
Messages: 9353
Location: down under
Offline
[Profile] [PM]

BachDuongTM wrote:
:cry: :cry:
xin chào mọi người
hiện tại mình đang có vướng mắc mong mọi người giúp đỡ.

trước đây mình có chạy một Mysql sever với 1 database duy nhất dung lượng khoảng 1,5G <1 forum> sử dụng bản mysql-3.0 thì mọi việc đều bình thường.Thời gian load cho 1 page trung bình 3-4 s <khá nhanh>
 

Một trang load có nhiều factor chớ không riêng gì CSDL. Bởi thế, nếu tính round-trip (thời gian load 1 trang) là tính tổng thể và không xác định cụ thể performance của CSDL được.

BachDuongTM wrote:

nhưng từ khi mình chuyển qua build bản mysql 5.0 thì trục trặc xảy ra.Trước hết là kô thể kết nối do code cũ ,may mà sửa nhanh chóng.Bây giờ thì xảy ra hiện tượng như mọi người gọi là cái cổ chai ấy.Mysql tốn rất nhiều tài nguyên CPU của hệ thống mà làm việc có vẻ ỳ ạch chứ kô nhanh chóng như trước.Việc duyệt web vì thế nên chậm đi hẳn ,mình đã thử khắc phục nhiều cách nhưng kô thay đổi nhiều.
 

Nếu server hardware không thay đổi thì hiển nhiên vấn đề nằm ở code và cấu trúc của database.

BachDuongTM wrote:

tối ưu Mysql là một việc vô cùng khó khăn mà ít người nói đến,đâu chỉ là việc cp file my.cnf vào thư mục /etc và chạy mysql lên là ổn.Vì vậy mong mọi người những ai đã có nhiều kinh nghiệm về vấn đề này có thể chia sẻ với mọi người,đôi khi một câu nói cũng có thể tìm ra chân lý.
 

Lý do đơn giản là vì tối ưu không chỉ nằm ở một khía cạnh nào đó mà nó trải dài ít nhất bốn khía cạnh quan trọng:

1. SQL query
2. SQL service
3. Operating System
4. Hardware

Trong 4 khía cạnh trên, nếu HW và OS không thay đổi thì chỉ còn có 2 điểm cần tập trung. Tuy nhiên cũng nên xét lại 3) và 4) nếu có thể.

Điểm bồ đề cập /etc/my.cnf chỉ là một khía cạnh của điểm 2). Theo tớ bồ, nên tập trung đến 1) ngay lúc này.

BachDuongTM wrote:

theo ý kiến chủ quan của mình thì mình muốn lắng nghe những kinh nghiệm của mọi người ,và nếu cần thì mình sẽ post cấu hình sever của mình lên <thực sự chưa muốn đưa lên để mọi người chỉnh giúp - nghe giống ăn sẵn quá ,kiểu click and see ...>

nếu vấn đề quá rộng thì chúng ta có thể thu hẹp lại <trong cấu hình sever mình chăng > smilie smilie

 

Có vài điểm tối quan trọng bồ cần xem:

- tránh query kiểu ambiguous như SELECT *. Tất cả các query phải cụ thể column và số column cần thiết. SELECT * hao tổn CPU một cách không cần thiết.

- tránh dùng sub-query khi có thể được.

- tránh dùng các logic và vòng lặp ngay trên CSDL. CSDL chỉ dùng để query những gì mình muốn query.

- nên tạo index cá biệt cho các column có liên quan đến những query thường xảy ra

- nên thường xuyên OPTIMIZE tables

- nên chú trọng 2 giá trị: table_cachekey_buffer_size trên cấu hình my.cnf. Giá trị cụ thể thế nào tùy thuộc vào tầng số sử dụng và kích thước của database.

- nên dùng connection pool để bảo tồn và điều hợp connection từ application đến CSDL. Tránh dùng "per connection" cho mỗi query.

- trên bình diện OS, nên build MySql theo dạng static link thay vì dynamic link vì chúng performance khác biệt thấy rõ.

Chi tiết thế nào thì phải đào sâu và phải cụ thể hơn.

Thân mến.
What bringing us together is stronger than what pulling us apart.
[Up] [Print Copy]
  [Question]   Cấu hình Mysql sever sao cho đúng ? 26/01/2007 16:50:46 (+0700) | #3 | 38268
[Avatar]
BachDuongTM
Member

[Minus]    0    [Plus]
Joined: 29/06/2006 17:39:39
Messages: 85
Offline
[Profile] [PM] [Email]
Một trang load có nhiều factor chớ không riêng gì CSDL. Bởi thế, nếu tính round-trip (thời gian load 1 trang) là tính tổng thể và không xác định cụ thể performance của CSDL được.

Nếu server hardware không thay đổi thì hiển nhiên vấn đề nằm ở code và cấu trúc của database.
Lý do đơn giản là vì tối ưu không chỉ nằm ở một khía cạnh nào đó mà nó trải dài ít nhất bốn khía cạnh quan trọng:

1. SQL query
2. SQL service
3. Operating System
4. Hardware

Trong 4 khía cạnh trên, nếu HW và OS không thay đổi thì chỉ còn có 2 điểm cần tập trung. Tuy nhiên cũng nên xét lại 3) và 4) nếu có thể.

Điểm bồ đề cập /etc/my.cnf chỉ là một khía cạnh của điểm 2). Theo tớ bồ, nên tập trung đến 1) ngay lúc này.

Có vài điểm tối quan trọng bồ cần xem:

- tránh query kiểu ambiguous như SELECT *. Tất cả các query phải cụ thể column và số column cần thiết. SELECT * hao tổn CPU một cách không cần thiết.

- tránh dùng sub-query khi có thể được.

- tránh dùng các logic và vòng lặp ngay trên CSDL. CSDL chỉ dùng để query những gì mình muốn query.

- nên tạo index cá biệt cho các column có liên quan đến những query thường xảy ra

- nên thường xuyên OPTIMIZE tables

- nên chú trọng 2 giá trị: table_cachekey_buffer_size trên cấu hình my.cnf. Giá trị cụ thể thế nào tùy thuộc vào tầng số sử dụng và kích thước của database.

- nên dùng connection pool để bảo tồn và điều hợp connection từ application đến CSDL. Tránh dùng "per connection" cho mỗi query.

- trên bình diện OS, nên build MySql theo dạng static link thay vì dynamic link vì chúng performance khác biệt thấy rõ.

Chi tiết thế nào thì phải đào sâu và phải cụ thể hơn.

Thân mến. 


cảm ơn anh đã trả lời cụ thể .

về thực tế nhiệm vụ của em là đảm bảo sever up time 24/24 ,mọi hành động chỉnh sửa đến code web là hạn chế mức tối đa.Em chắc sẽ có nhiều người cùng như em,tức là hoạt động mức OS mà thôi . smilie .
Do đó việc tối ưu các câu lệnh truy vấn và thiết kế database hợp lý là điều muốn làm mà không thể được <có thể do em chưa nói rõ ở đầu tiên>.Trước đây khi sever chạy phiên bản mysql 3.0 thì mọi việc vẫn bình thường,tốc độ load web ở mức trung bình và nhanh .Tất nhiên viêc thời gian load này phụ thuộc vào nhiều yếu tố khác nhưng sau khi cài mysql 5.0 lên mà tốc độ chậm đi rất nhiều 1 page load mất 2 phút thì vấn đề là ở việc cài đặt bản mới kô đúng hoặc có trục trặc gì đó giữa kết nối data và web <apache+php>.

ngoại trừ việc chỉnh lại code của web còn thì những điều khác em đều thực hiện đủ,Mysql build theo kiểu static .chỉ build những cái cần dùng đến,các thông số như max_connections hay cache và buffer được tính toán dựa trên thông số thưc tế <vừa chạy vừa sửa > smilie .Tỷ lệ "hits" của cache và buffer là chấp nhận được .Tuy nhiên vấn đề gặp ra ở đây là 1 truy vấn mysql mất quá nhiều thời gian để thực hiện ,và chiếm quá nhiều CPU thông thường là 80 %.Trong các tập tin error log kô có thông tin gì cả,như vậy là sever chạy KÔ CÓ LỐI gì cả ??mọi thứ diễn ra bình thừong ngọa trừ việc chậm như rùa bò ....

cuối cùng giải pháp đưa ra là up lên bản 5.2 vì một số người khác cũng gặp trục trặc tương tự như mình.Kết quả thật bất ngờ,sever chạy khá ổn định và nhanh smilie smilie smilie .Mình đã thử build lại sever với bản 5.0 thay đỏi các mặc định và chạy thử thì hầu hết kô chịu nổi sau 10 phút test.Như vậy theo bản thân mình khuyến cáo các bạn kô nên up lên bản 5.0 mà có thể lên 5.2 hoăc các phiên bản khác .Có thể có lỗi trong bản 5.0 hoặc chính mình gây ra lỗi ,hic nhưng mà việc build một bản mysql thực sự KÔ QUÁ PHỨC TẠP thì mình chưa biết lỗi của mình ở đâu cả.

Nếu ai đó muốn mình có thể post lên file cấu hình của mình với mục đích tham khảo.Và ai đó có nhiều kinh nghiêm trong việc cấu hình mysql thì xin hãy chia sẻ cho những người mới bắt đầu.
thanks
[Up] [Print Copy]
  [Question]   Re: Cấu hình Mysql sever sao cho đúng ? 26/01/2007 21:02:22 (+0700) | #4 | 38275
[Avatar]
conmale
Administrator

Joined: 07/05/2004 23:43:15
Messages: 9353
Location: down under
Offline
[Profile] [PM]
Ặc ặc, bồ dùng bản Alpha 5.2 của MySql cho một server có đòi hỏi: về thực tế nhiệm vụ của em là đảm bảo sever up time 24/24? Nên cẩn thận với quyết định trên.

Có thể chính MySql 5.0 có vấn đề nhưng quyết định thẳng lên 5.2 (qua mặt luôn bản Beta) thì.... smilie

Good luck smilie).

PS: server của bồ chạy single CPU hay multiple CPU? Bồ có dùng sub-query không? nếu có, dùng nhiều hay ít? Bồ đưa lên một vài dòng SQL bồ dùng sub query được không?
What bringing us together is stronger than what pulling us apart.
[Up] [Print Copy]
  [Question]   Re: Cấu hình Mysql sever sao cho đúng ? 27/01/2007 00:25:23 (+0700) | #5 | 38317
msdn
Member

[Minus]    0    [Plus]
Joined: 23/06/2006 06:27:14
Messages: 214
Offline
[Profile] [PM]
ngoại trừ việc chỉnh lại code của web còn thì những điều khác em đều thực hiện đủ,Mysql build theo kiểu static .chỉ build những cái cần dùng đến,các thông số như max_connections hay cache và buffer được tính toán dựa trên thông số thưc tế <vừa chạy vừa sửa > .Tỷ lệ "hits" của cache và buffer là chấp nhận được .Tuy nhiên vấn đề gặp ra ở đây là 1 truy vấn mysql mất quá nhiều thời gian để thực hiện ,và chiếm quá nhiều CPU thông thường là 80 %.Trong các tập tin error log kô có thông tin gì cả,như vậy là sever chạy KÔ CÓ LỐI gì cả ??mọi thứ diễn ra bình thừong ngọa trừ việc chậm như rùa bò ....  


Giá trị max_connection cân nhắc tính theo số lượng người truy cập vào site và trên hết bro cần xem lại RAM , CPU của server bro .
Truy cập chậm cũng là nguyên nhân ở tài nguyên trên máy chủ không đáp ứng nỗi (máy chủ có cấu hình quá tệ, trong khi đó nhu cầu thì ngày càng tăng) .

Thân
[Up] [Print Copy]
  [Question]   Re: Cấu hình Mysql sever sao cho đúng ? 27/01/2007 01:44:43 (+0700) | #6 | 38336
[Avatar]
BachDuongTM
Member

[Minus]    0    [Plus]
Joined: 29/06/2006 17:39:39
Messages: 85
Offline
[Profile] [PM] [Email]

conmale wrote:
Ặc ặc, bồ dùng bản Alpha 5.2 của MySql cho một server có đòi hỏi: về thực tế nhiệm vụ của em là đảm bảo sever up time 24/24? Nên cẩn thận với quyết định trên.

Có thể chính MySql 5.0 có vấn đề nhưng quyết định thẳng lên 5.2 (qua mặt luôn bản Beta) thì.... smilie

Good luck smilie).

PS: server của bồ chạy single CPU hay multiple CPU? Bồ có dùng sub-query không? nếu có, dùng nhiều hay ít? Bồ đưa lên một vài dòng SQL bồ dùng sub query được không? 


:cry: :cry:
uhm ,có lẽ em sẽ suy nghĩ lại điều này.
thực tế trong hoàn cảnh lúc đó em kô có nhiều lựa chọn,bản chính thức 5.0 thì kô thể chạy được ,nên phải up lên cao hơn ,tìm hiểu trên các forum thì mới biết bản 5.2 chạy ổn định hơn và kô bị lỗi như của em <kô phải ai cũng bị lỗi này thì phải.>,hic do bị thúc ép về thời gian nên vấn đề quan trọng là lúc đó sever up lên sớm phút nào hay phút đó nên dành đưa ra cách thức này smilie-)) smilie-)) biết rằng có thể có rủi ro.giờ thì đúng là sever chạy rồi nhưng tiềm ẩn nhiều nguy cơ chưa biết ,hic đúng là họa vô đơn chí .có lẽ em nên quay về bản beta cho ổn định hơn.

về vấn đề config thì mọi giá trị của sever được xác lập sau khi theo dõi các thông số mysql trong nhiều ngày ,nên em chắc là kô có vấn đề <vd như max connect ,số tables open , ....>.CPU thì sever còi lắm chỉ là pen 4 3.0 thôi anh ,kô phải xeon đâu .mà mục đích của sever chỉ là chạy một website và một database khoảng 1.5 Gb thêm vào khoảng 2G file để download.Hiện tại khi đang chạy bản 5.2 sever chạy khá ngọt ,cpu trung bình chỉ khoảng 40% thôi chủ yếu là xử lý apache còn mysql thì chiếm có 4% cpu <> . smilie smilie thay vì 80% như trước.như vậy theo ý kiến của em thì mục đích là đạt được trên cả mong đợi về hiệu năng.Còn bảo mật thì ........chắc tạm thời gia cố lại nhà cửa cho chắc chắn ,backup chứ cũng kô biết làm gì hơn cả.
còn về post query thì như em đã nói,code do một nhóm làm riêng ,em kô tiện can thiệp vào code của họ ,mình chỉ có thể check và sort lại data mà thôi.
[Up] [Print Copy]
[digg] [delicious] [google] [yahoo] [technorati] [reddit] [stumbleupon]
Go to: 
 Users currently in here 
1 Anonymous

Powered by JForum - Extended by HVAOnline
 hvaonline.net  |  hvaforum.net  |  hvazone.net  |  hvanews.net  |  vnhacker.org
1999 - 2013 © v2012|0504|218|