max connection mysql

Discussion in 'Hỏi Đáp Kỹ Thuật' started by hoangvn92.it, Apr 25, 2020.

  1. Cái bang

    Cái bang Sơ Nhập Giang Hồ

    từ khoá là mount ramdisk.

    ví dụ config của nginx có thư mục cache là /etc/nginx/cached thì dùng lệnh sau :
    trong quá trình sử dụng, dùng lệnh sau để biết tổng dung lượng cached là bao nhiêu:
    cached kiểu này, chỉ cần cache khoảng 5 phút thôi cũng giảm tải được rất nhiều cho server. Thực tế với các site không có user, không sử dụng cookie thì mình chỉ cần 1 lớp cached duy nhất kiểu này và không cần các lớp cached phía sau nữa. cũng khỏi lo tuning sql server làm gì.
     
    money, Nai and hoangvn92.it like this.
  2. levis012

    levis012 Sơ Nhập Giang Hồ

    với site như này thì nên cache

    TÔi không biết ông thớt dùng mã nguồn gì nhưng nên dùng cache query

    Redis cache chẳng hạn để hạn chế connect vào DB.

    Ngoài ra nếu cần thiết thì phải load balancer 2 3 máy chủ đằng sau giảm tải thì mới cân được.

    Cần thiết phải triển khai cluster MySql, master slave để đảm bảo đọc ghi không ảnh hưởng.

    Hạn chế tối đa connection đến DB để đảm bảo cho hệ thống ko bị nghẽn cổ chai, thường nó nghẽn ở DB là nhiều.
     
  3. CSGO

    CSGO Khách Qua Đường

    Để index hiệu quả thì phải xuất phát từ sql truy vấn của bạn hiện như nào. Vd như nếu bạn where name like %keyword% thì ko có cách nào index đc cả. 1tr records thì ko phải là quá nhiều, nếu tối ưu sql và đánh index phù hợp thì vẫn ok
    Như bạn mô tả thì mình đoán site bạn đang có nhiều slow query dẫn đến việc tăng connection => overload server
    Để cải thiện hiệu năng thì bạn có thể làm các việc sau:
    - Bật slowlog query trong mysql lên để biết sql nào đang chậm
    - Đánh index dựa vào các slow query đó
    - View xem Ram server còn nhiều ko, nếu còn nhiều thì cấp thêm cho mysql vì index đc lưu trong ram
     
    Last edited: Apr 30, 2020
    hoangvn92.it and Nai like this.
  4. xmenvn2510

    xmenvn2510 Moderator + MiddleMan Staff Member

  5. hoangvn92.it

    hoangvn92.it Sơ Nhập Giang Hồ

    cap them ram the nao bac nhi ?

    sau khi xóa hết mấy cái thừa.
    thì tổng data thu về còn 15G à =))

    máy mình hình như có 250G ram, ổ cứng thì 1T SSD M.2

    [​IMG]
     
  6. CSGO

    CSGO Khách Qua Đường

    Bạn mở file config của mysql ra (thường là /etc/my.cnf) tìm đến config sau và thay giá trị theo mong muốn
    Code:
    innodb_buffer_pool_size = 2G
    Có thể đọc thêm tại percona .com/blog/2014/01/28/10-mysql-performance-tuning-settings-after-installation (tìm phần innodb_buffer_pool_size)
    Việc cấp thêm ram cho mysql chỉ là điều kiện cần, chủ yếu phụ thuộc vào index của bạn đang cover truy vấn sql như nào.

    Bật lưu log slowquery thì bạn config theo các param sau (cũng trong file /etc/my.cnf)
    Code:
    slow_query_log = 1
    slow_query_log_file = /var/log/mysql/slow.log
    long_query_time = 10
    Config xong thì restart lại mysql và run sql show global variables tìm đến các param trên xem mysql đã nhận chưa
    Con server này to thế =)), resource còn thừa đầy luôn kìa, mới dùng hết có 10% resource
     
    Last edited: May 1, 2020
    hoangvn92.it likes this.
  7. money

    money Hương Chủ

    Server của em còn dư sức nhiều lắm. Bị chậm khả năng là do code cùi rồi. Nên tập trung vào việc sửa code mới giải quyết triệt để chứ sửa config chỉ tạm thời thôi.
    Ở trên bạn @CSGO đã chỉ cách làm OK rồi, đó là cho database dùng innodb, còn đây là cái anh đang config cho database myISAM của 1 con VPS 16Gb RAM. Em check xem tương ứng bên innodb là gì thì sửa lại.

    Code:
    [mysqld]
    
    myisam_sort_buffer_size = 1024M
    myisam_sort_buffer_size = 1024M
    
    
    max_connections = 1024
    
    sort_buffer_size = 1024M
    key_buffer_size = 1024M
    read_buffer_size = 1024M
    join_buffer_size = 1024M
    read_rnd_buffer_size = 1024M
    bulk_insert_buffer_size = 1024M
    
    thread_concurrency = 16
    
    tmp_table_size = 1024M
    max_heap_table_size = 1024M
    max_allowed_packet = 512M
    query_cache_limit = 64M
    query_cache_size = 1024M
    connect_timeout = 60
    thread_cache_size = 32
    
    
     
    hoangvn92.it likes this.
  8. hoangvn92.it

    hoangvn92.it Sơ Nhập Giang Hồ

    sau khi làm theo #CSGO và A #money chỉ bảo

    Cám ơn các bác đã nhiệt tình tư vấn



    mình tăng lên
    innodb_buffer_pool_size = 30G

    VÀ cấu hình thấp hơn a money tí xem sao hay vi để 1024M thì mình để còn 512M
    thì sv có vẻ giảm đáng kể
    [​IMG]
     
    Last edited: May 1, 2020
  9. CSGO

    CSGO Khách Qua Đường

    CPU vẫn cao như kia thì bạn nên check thêm slowlog xem sql nào đang ngốn, nếu có slowsql thì nên đánh index để tối ưu hơn.
    Nếu bạn không rành cách đánh index thì post sql lên đây hc inbox mình mình support
     
  10. money

    money Hương Chủ

    Vãi, em phải để cao hơn anh chứ, vì server em mạnh hơn nhiều.
     
    hoangvn92.it likes this.
  11. hoangvn92.it

    hoangvn92.it Sơ Nhập Giang Hồ

    À site mình vẫn còn 1 phần chưa cache
    Ví dụ lịch sử xem bài
    Rồi mục theo dõi bài viết khi có comment mới or content mới
     
  12. money

    money Hương Chủ

    Vl thật. Cái browsing history, nếu bình thường, người ta chỉ dùng cookie để lưu vì nó cũng ko có gì quan trọng. Em chơi cache lại thì khả năng là code lưu xuống db luôn à?
    Bởi vậy anh nhắc lại cách tối ưu tốt nhất là phải check code chứ mò mò thế này càng mò càng thấy lắm thứ lòi ra.
     
  13. hoangvn92.it

    hoangvn92.it Sơ Nhập Giang Hồ

    đúng rồi a cái này e lưu theo user. tức họ có tk thì lưu vào tk. mỗi tk 50 bài đã xem. ko có tk thì lưu vào trình duyệt
     
  14. console

    console Bang Chúng

    Trước mình cũng bị y vậy vì table khá to khoảng 20tr record, phần giống comments của thớt lên tới 800tr. Nâng cấp server kiểu gì cũng k đc. Sau đó mới bỏ công tách phần 800tr kia qua mongo viết api bằng node. Tối ưu lại mysql config. Và cuối cùng tối ưu toàn bộ code lại. Tại mình chạy rất nhiều thứ python, php, node, redis, queue.. nên hơn vất vả trong lúc tối ưu code. Nhung h chỉ cần con server 8core/16threads 32gb ram chạy ổn vừa nhanh vừa tiết kiệm chi phí.
     
    thitgaluoc and hoangvn92.it like this.
  15. hoangvn92.it

    hoangvn92.it Sơ Nhập Giang Hồ

    Hiện tại code bằng PHP 5.1 mình đang tìm cách chuyển qua 7. :p
     
  16. money

    money Hương Chủ

    Không đáng để làm em ạ. Em đang đi xe đạp và bị chậm. Thay vì chuyển sang đi xe máy, xe hơi, máy bay, ... thì em lại chọn cách mua cái xe đạp xịn hơn để đạp và hi vọng nó nhanh hơn.
     
    Tony Vu and Nai like this.
  17. hoangvn92.it

    hoangvn92.it Sơ Nhập Giang Hồ

    a ơi giúp e phát nữa nhé :(

    trong code cần lưu ý gì a nhỉ ?
    các truy vấn 100% e cache cả rồi
    - danh mục hay top bài viết -> cache theo Object ra html từng phần (tranh tình trang for liên tục cho từng user) ($this->cache->save($namecache, $query, 2 * 60 * 60);)
    - sản phẩm thì cache database -> tại còn thời gian update. ($this->db->cache_on() dùng cái này)

    e code bằng codeigniter

    nhưng ko hiểu sao 2 tháng này bị lỗi.
    dù CPU chỉ chiếm 10% server (server này 100% code php)
    thì e bị tình trang là cứ kiểu 5% ng dùng vào sẽ bị lỗi ko kết nối được dữ liệu. (mặc dù đã cache full page rồi) chỉ cần f5 lại là vào dc nhưng cái này là lỗi chắc rồi mà ko biết tìm ra rồi fix sao :(

    user ko tăng, site load bt ko chậm đi mà chả hiểu sao lỗi
     
    Last edited: May 3, 2020
  18. Dang

    Dang Bang Chúng

    Với CI, cookie / session nó làm việc ko tốt, đã lưu cookie mà còn log vào db. Nếu trang bị request thì table cookie của nó phồng lên dzữ lắm! Tốt nhất bạn nên dùng cookie / session riêng. Tách ra và kết hợp với ajax. Nếu được thì bạn post file controller đó lên để anh, em thảo luận thêm, chứ như vầy thì khó gãy đúng chỗ!
     
  19. money

    money Hương Chủ

    Anh ko xài codeigniter cũng ko mò vào code của em thì chịu ko đoán dc bệnh :D
    Riêng cái vụ “chỉ cần f5 là vào dc” thì em có thể fix tạm bằng auto refresh khi lỗi xem có được không rồi từ từ tìm nguyên nhân chính xác sau.
     
  20. hoangvn92.it

    hoangvn92.it Sơ Nhập Giang Hồ

    mà rõ khổ là đã cache rồi.
    thì nó còn check lại mysql làm gì nhỉ :( e nghĩ nó check lại nên mới die vầy.
    mà chả hiểu sao die.
    khi server data chạy có 4-5% cpu
    còn server code chạy có 10% cpu

    site load nhanh bình thường chỉ lỗi thôi :(