[Hỏi] Tối ưu cho nginx+mariadb với VPS ram 2GB

Discussion in 'Hỏi Đáp Kỹ Thuật' started by rugbikk, May 25, 2019.

  1. rugbikk

    rugbikk Tân Thủ Thôn

    Chào các bác, tình hình là e mới tập tành làm site auto, có mua con vps 10$ trên linode, em dùng combo nginx + mariadb + php. Tối nay tầm 9h thì site e đột nhiên không vô được(lỗi 504), ssh + các thao tác kèm theo sao khi ssh thi cực kì chậm. Khi kết nối vô database và dùng lệnh *full processlist* thì thấy có tầm 50 query đang chạy, cũng chỉ là câu simple query(Select * from table)(đã được đánh index). Khi các query giảm xuống tầm 10,20 thì site lại chạy bình thường. :(( có bác nào có kinh nghiệm về vụ này hay về optimize nginx/mariadb thì chia sẻ cho em với ạ.
     
  2. sincos

    sincos Bang Chúng

    1. Dù là SIMPLE QUERY nhưng không limit thì cũng dễ die.
    2. Cái nhà dù to đến mấy mà cái cổng vào chỉ lọt 2 người cùng lúc thì khi 10 người cùng vào sẽ có 8 người phải đợi ==> xem lại limit connection và query của database
    3. Bật log lại các slow queries để fix
    4. Bật log slow php để fix

    Kiểm tra số connection tới VPS, kiểm tra realtime trên Analytics...........

    Tóm lại là ko thể liệt kê hết được..... để fix cái này cần kinh nghiệm và thời gian.
     
    Thanh Nguyen and xmenvn2510 like this.
  3. xmenvn2510

    xmenvn2510 Moderator + MiddleMan Staff Member

    chính xác là kinh nghiệm và thời gian.
     
    rugbikk likes this.
  4. Nai

    Nai MiddleMan Staff Member

    Có dùng script gì để quản lý không bác. Nếu không thì show processlist xem hàng đợi có query nào có time lâu không, nếu lâu thì khả năng là limit connect rồi. Vào /etc check my.conf xem sao
     
  5. rugbikk

    rugbikk Tân Thủ Thôn

    Dạ thanks bác,
    1. Cái này thì e có limit cho query rồi bác
    2.Em check max connection thì là 151. E có dùng longview của thằng linode, thì thấy max connection hôm qua 57, nghĩa là hôm qua server bị đứng do 57 connection này tới cùng 1 lúc.
    Số 3 và số 4 e làm rồi, để xem tối nay còn bị nữa hay không
    Bác nhắc e mới nhớ :((( thằng Analytics check được realtime, để tối nay e coi thử.
     
    Last edited: May 25, 2019
  6. rugbikk

    rugbikk Tân Thủ Thôn

    E có dùng longivew của thằng linode để xem mấy thông số thông kê như ram, cpu ..... hôm qua lúc có 57 connection vào cùng 1 lúc thì gần như server đứng luôn bác ạ. e mới thêm đống này vô my.cnf để xem có hiệu quả ko

    Code:
    innodb_buffer_pool_size=1024M
    innodb_flush_log_at_trx_commit = 0
    innodb_flush_method = O_DIRECT
    innodb_log_file_size = 512M
    innodb_log_files_in_group = 2
    innodb_log_buffer_size=32M
    innodb_thread_concurrency=8
    
    innodb_sort_buffer_size = 32M
    
    query_cache_type = 1
    query_cache_limit = 64M
    query_cache_min_res_unit = 2048
    query_cache_size = 512M
    
    sort_buffer_size = 4M
    thread_cache_size = 32
    max_connections = 1024
    
    slow-query-log = 1
    slow-query-log-file = /var/lib/mysql/mysql-slow.log
    long_query_time = 1
    
    key_buffer_size = 64M
    
    innodb_file_per_table
    skip-name-resolve
     
  7. rugbikk

    rugbikk Tân Thủ Thôn

    dạ vâng ạ, e cũng đang search khắp nơi trên mạng về optimize nginx, database, rồi apply thử xem có kết quả không {adore}{adore}
     
  8. xmenvn2510

    xmenvn2510 Moderator + MiddleMan Staff Member

    dùng mã nguồn wp hay tự code. đã cache chưa bro. Database max rows là bao nhiêu. 151 connect là ít mà.
     
  9. rugbikk

    rugbikk Tân Thủ Thôn

    e tự code, dùng laravel bác ạ, e cũng đang nghiên cứu vụ cache này, tính sử dụng cache của nginx. 151 là e dùng "SHOW VARIABLES LIKE "max_connections";" để xem thôi bác, hôm qua lúc cao điểm chỉ có 57 connection thôi. database e có tầm 500k rows thôi. {adore}
     
  10. princenuce

    princenuce Sơ Nhập Giang Hồ

    Với laravel dùng debugbar để show các query ở 1 page nào đó xem nó đúng với ý đồ của mình không, có query nào không nằm trong danh sách công việc phải xử lý từ đó mới tìm cách fix
     
  11. rugbikk

    rugbikk Tân Thủ Thôn

    e check rồi bác ạ, query ko có vấn đề gì cả, cứ tầm 8->11 h tối, e dùng show full processlist thì thấy có hơn 52 connection cùng 1 lúc tới, nhưng lên analytic check thì ko thấy có user nào cả {beat_brick}{beat_brick}{beat_brick}
     
  12. princenuce

    princenuce Sơ Nhập Giang Hồ

    Khéo là bot google cũng nên, web mà bot vào cũng chết thì nên xem lai :3
     
  13. rugbikk

    rugbikk Tân Thủ Thôn

    e nghĩ là do badbot đấy bác ạ, sau khi dùng cloudflare, bật mode under attach lên thì bây giờ hết bị rồi {big_smile}{big_smile}