[Hỏi] mysql ngốn CPU quá nhiều, phải làm sao để giảm?

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

  1. Nai

    Nai MiddleMan Staff Member

    Vấn đề đã được giải quyết, ai đang cpu cao do fts của mysql thì tham khảo sphinx search chữa cháy với database dưới dưới 15 - 20 triệu vì index có giới hạn
    http://cafemmo.club/threads/hoi-mysql-ngon-cpu-qua-nhieu-phai-lam-sao-de-giam.2126/#post-23737
    -
    Tình hình là lỡ nâng cấp lộn từ con VPS 6 CPU 16GB RAM -> 12 CPU + 48 GB RAM bên DO mà mysql mà CPU vẫn làm việc cật lực bởi mysql. Hiện đang liên hệ với bên DO để hạ giúp (vì chọn nhầm option cannot reverse, đùng 1 cái từ 320GB SSD lên gần 1TB {cry}).
    Đã bật log slow_query và long query cho mysql nhưng ko có kết quả. Còn log còn sphinx search thì hơn 95% là dưới 0.01s. còn lại là dưới 0.5s hết. Nên mình không nghĩ là do thằng sphinx. Hiện tại không biết làm cách nào để kéo CPU xuống chứ để vầy hoài cảm giác VPS không hoạt động hiệu quả, bất quá các site vẫn load bình thường nhờ html cache (Load lần dầu thì vẫn ầm ầm, gặp no result thì random load page cũng tầm 5 - 6s).

    Anh nào có kinh nghiệm vụ kéo CPU này chia sẻ em ké với, site đang tụt dốc không phanh nên đang hi vọng nguyên nhân do cái CPU cao này nên cần khắc phục ăn ngon hơn {embarrassed}

    Bản ghi thì 2 bản dùng chính và query nhiều nhất là tag và product

    - 2 table này dùng nginx search để query cho page tag và thả tag cho page product. Còn SELECT thì query bình thường
    - Sau khi query xong thì luôn đóng connect ngay lặp tức bằng hàm mysqli_close();
    - Tag table với khoảng 600k records
    upload_2019-5-16_16-49-8.png

    - product table khoảng gần 10 triệu records
    upload_2019-5-16_16-52-29.png

    upload_2019-5-16_16-45-8.png
     

    More Threads in same category

    Last edited: May 17, 2019
    hyperlight likes this.
  2. xhauto

    xhauto Khách Qua Đường

    trang này ăn tiếp thị sản phẩm à bác
     
  3. Phan Thị

    Phan Thị Bang Chúng

    Đánh index chửa, show query ra mới help dc, chịu khó check lại code cái đoạn nào cần tối ưu lại index là giảm ngay, mình cũng bị vậy nâng cấp lên vẫn vậy nhưng đánh index đúng là load 1-2% ngay
     
    Nai likes this.
  4. Nai

    Nai MiddleMan Staff Member

    Chủ yếu là query từ tag page thôi cụ. Về check code thì em check cũng khá kỹ rồi vì nâng cấp cũng 3 4 lần rồi nên lần nào cũng check trước khi nâng cấp :(. Chỉ có lần này nâng cấp để test thôi.
    Index thì e slug với id e where là đánh index cả rồi. Fulltext cũng rứa.
    Lúc trước e cũng gặp trường hợp này 1 lần, lúc đó do dùng Fulltext search của mysql nên nó trì, qua sự tư vấn của cụ @console thì e chuyển sang sphinx vì cấu hình nhanh hơn es với tình hình database hiện tại
    SELECT
    PHP:
    $sql =sprintf('SELECT `id`, `name`, `sku`, `price`, `old_price`, `discount`, `img`, `detail`, `intro`, `info`, `relative_products`, `time` FROM `product_v2` WHERE `alias` = \'%s\' '$product_alias);
    Time query select
    upload_2019-5-16_17-40-53.png
    PHP:
    $sql_sphinx sprintf('SELECT `id` FROM `product_v2` WHERE MATCH(\'%s\') LIMIT 60'addslashes(str_replace('/'''$search_name)));
    time query search via sphinx
    upload_2019-5-16_17-42-38.png

    upload_2019-5-16_17-36-19.png
     
    Last edited: May 16, 2019
  5. Nai

    Nai MiddleMan Staff Member

    Trang này dropship bác tin không {confuse}
     
    Last edited: May 16, 2019
    xhauto likes this.
  6. Kiến Lửa

    Kiến Lửa Tân Thủ Thôn

    Restart thử xem sao bác.
     
  7. xhauto

    xhauto Khách Qua Đường

    chắc dropship rồi, trùm quá
     
  8. Nai

    Nai MiddleMan Staff Member

    Vẫn vậy à bác :D
     
  9. Phan Thị

    Phan Thị Bang Chúng

  10. sincos

    sincos Bang Chúng

    Table là InnoDB hay Myisam?
     
  11. Nai

    Nai MiddleMan Staff Member

    InnoDB cụ ơi
     
  12. Nai

    Nai MiddleMan Staff Member

  13. automan

    automan Hương Chủ

    dropship 10tr sản phẩm, GIÀU
     
  14. Thanh Nguyen

    Thanh Nguyen Bang Chúng

    Giải quyết được chia sẻ e với cụ nhé. Thỉnh thoảng giờ cao điểm CPU của e cũng toàn 300-400% luôn. Toàn bị stop mysql. Đau đầu ghê
     
  15. Nai

    Nai MiddleMan Staff Member

    {oh} nói giỡn mờ, her her
     
  16. sincos

    sincos Bang Chúng

    Nếu không cần thiết thì chuyển về MyISAM rồi thêm các dòng sau vào file my.cnf

    Code:
    performance_schema = 0
    skip-innodb
    default-storage-engine=MYISAM
    default-tmp-storage-engine=MyISAM
    
    Sau đó restart lại mysql. Hình như trước đây mình đã từng gặp vấn đề này rồi.
     
    Nai likes this.
  17. money

    money Hương Chủ

    Đã dùng sphinx thì bỏ ft index của mysql đi. Và find & replace đám code cũ dùng fts thành sphinx.
    P/S: đúng là fts của sphinx nhanh.
     
    Nai likes this.
  18. Nai

    Nai MiddleMan Staff Member

    Éc, remove index của mysql cpu giảm hơn 50%.
    Tối giờ e snapshot để convert InnoDB tables to MyISAM mà snapshot mãi ko xong nên chưa làm thử. Giờ cách của a triển vì replace lâu lắc rồi mà ko remove :(
    Thank anh yêu nhiều lắm {sweet_kiss}{sweet_kiss}{sweet_kiss}{sweet_kiss}
     
  19. Nai

    Nai MiddleMan Staff Member

    Do đã xử lý xong vấn đề nên ai đang gặp tình trạng tương tự nếu dùng fts của mysql thì đổi sang sphinx theo các bài viết sau đây nhé:
    Cách cấu hình:
    Bước 1 - Cài đặt: Search google nhé, 1 - 2 câu lệnh gì à. Cài lâu quá rồi ko nhớ chính xác nên mình share theo bookmark "sphinx" mình đã lưu
    Code:
    http://sphinxsearch.com/docs/current.html#supported-system
    Bước 2 - Cấu hình theo bài viết này. Nhớ start service "searchd"
    HTML:
    https://yabeow.com/bai-3-cau-hinh-mot-index-sphinx/
    Bước 3 - Test coi search ok không thì xóa index fts từ mysql đi nếu không sẽ gặp tình huống tương tự như mình khi database tiếp tục phình to.

    Nhược điểm của sphinx là ko thể index quá 4.5GB được dữ liệu nên với các database vài chục triệu records hoặc name quá dài thì nên tìm giải phải thay thế sẵn như es hoặc chia table index ra (mới nghĩ, chưa làm).
     
  20. money

    money Hương Chủ

    @Nai ủa sao lại có limit 4.5gb nhỉ? Anh ko làm sphinx, lúc trước chỉ test sơ sơ, nhưng anh nghĩ có nhầm lẫn rồi, em xem kỹ lại xem thế nào.
    Ở đây nó nói index size của nó lớn lắm mà:
    https://sphinxsearch.com/forum/view.html?id=5511
     
    Nai likes this.