Lệnh đồng bộ hóa làm gì?


15

Tôi biết những gì nó làm ... Tôi đoán tôi tò mò tại sao nó đang khắc phục một vấn đề trong một ứng dụng mà tôi đã sử dụng. Tôi đã tiếp quản một ứng dụng tomcat khá lớn hoạt động như máy chủ Red5 cho một loạt các máy khách flex và xử lý rất nhiều dữ liệu tương tác thời gian thực, cuối cùng được đưa ra một api rails. Vấn đề đã được tải rất nhiều theo thời gian, số lần trả lời cho các khách hàng này đã tăng lên 3-400 ms trong khi thông thường <100 ms. Khách hàng nghi ngờ đó là vấn đề bộ nhớ mà chúng tôi thực sự không bao giờ có thể xác nhận. Một ngày nọ, một máy chủ dàn dựng tôi đang chạy thử tải trên cơ bản đã ngừng nhận yêu cầu hoặc cực kỳ chậm. Tôi đã gửi

sync && echo 3 > /proc/sys/vm/drop_caches

và kỳ diệu là máy chủ đã hoạt động trở lại và bắt đầu chạy ở tốc độ tối đa phục vụ các kết nối này. Đây có phải là một sự trùng hợp ngẫu nhiên hay hành vi này có ý nghĩa và tại sao?


4
Đó là hai lệnh. Cái nào có tác dụng bạn nhận thấy?
Michael Hampton

linuxtidbits.wordpress.com/2008/02/20/purge-memory đề nghị chạy chúng cùng nhau để tôi không biết.
j_mcnally

này được tiếp tục refactored đây: commandlinefu.com/commands/view/1026/...
j_mcnally

4
Khó mà nói ra được. Bạn sẽ không mong đợi các lệnh này sẽ làm bất cứ điều gì có lợi trên máy chủ trừ khi nó bị nhầm lẫn khủng khiếp. Nhưng nó chắc chắn không thể loại trừ nếu không nghiên cứu kỹ hơn. Nếu nó xảy ra một lần nữa, hãy thử chỉ synchoặc echo. Sau đó thử tìm hiểu tại sao máy chủ chậm trong trường hợp sửa lỗi này (CPU có được tối đa không? IO có tối đa không? Hệ thống có phân trang không?)
David Schwartz

Câu trả lời:


20

Bất kỳ ổ cứng nào cũng có độ lớn chậm hơn RAM của bạn, vì vậy linux sử dụng bất kỳ RAM dự phòng nào bạn có thể nổi xung quanh để lưu trữ dữ liệu hệ thống tập tin. Tuy nhiên, điều này thực sự sẽ không bao giờ gây ra vấn đề về hiệu năng trừ khi có lỗi gì đó với đĩa cứng của bạn hoặc các dịch vụ trên máy chủ của bạn đang cố ghi dữ liệu với tốc độ cao trong một thời gian dài đến mức máy chủ không thể lưu trữ hoặc truy xuất dữ liệu. Nó cũng có thể là một dấu hiệu cho thấy đĩa cứng của bạn đã hết tuổi thọ.

Dù sao đi nữa:

  • chạy man syncsẽ cho bạn biết đồng bộ hóa nào [xóa bộ đệm FS]
  • googling 'linux drop_caches' sẽ cho bạn biết rằng việc lặp lại số 3 vào nó sẽ giải phóng tất cả các trang bộ nhớ không cần thiết khỏi bộ đệm [điều này không cần thiết trên một hệ thống lành mạnh]
  • command1 && command2 phá vỡ thành 'nếu lệnh1 kết thúc thành công thì chạy lệnh2'
    • đối tác cho điều này là command1 || command2aka 'nếu lệnh1 thất bại thì chạy lệnh2'

Lệnh bạn đã đưa ra là một sửa chữa tạm thời tốt nhất và là triệu chứng của một cái gì đó sai với hệ thống của bạn. Các ổ đĩa của bạn đang ở giai đoạn cuối hoặc hệ thống của bạn quá yếu so với những gì bạn đang làm với nó hoặc cả hai .


cảm ơn, tôi không chắc chắn, tôi nghĩ rằng đây là một giải pháp rất ngắn hạn. Tôi đoán tôi muốn có một cái nhìn sâu sắc về lý do tại sao điều này có thể làm việc. Máy chủ đang ở trên EC2 nên không chắc chắn về ý tưởng HD EOL.
j_mcnally

@j_mcnally EC2? Chà, tôi chỉ có thể đoán ví dụ cụ thể của bạn trông như thế nào, nhưng có lẽ đó là sự kết hợp của các yếu tố như EBS lúc nào cũng không ổn định, phân bổ RAM nhỏ và không có phân vùng trao đổi.
Sammitch

Vì vậy, bạn đang nói giải pháp có thể thực sự hợp lệ lol?
j_mcnally

@j_mcnally thật đáng buồn, nếu bạn không thuộc một trong những trường hợp được tối ưu hóa IO hàng tỷ đô la mỗi tháng, có khả năng là có.
Sammitch

5

AWS không dành cho những người yếu tim, và bạn chỉ gặp phải một trong những lý do tại sao. Tình huống I / O đĩa kém trên AWS là nổi tiếng và là một trong những yếu tố chính cần xem xét cho bất kỳ ai xây dựng một ứng dụng trên nó. Có các phiên bản được tối ưu hóa cho đĩa và một vài thủ thuật khác (như xây dựng RAID 0 từ khối lượng EBS) mà bạn có thể cố gắng cải thiện vấn đề. Đảm bảo sử dụng các phiên bản lớn hơn (ít nhất là m1.lund) để đảm bảo rằng kernel có thể đệm I / O đĩa.


có bằng cách sử dụng m1.lund. Các máy chủ này được tạo ra cho ứng dụng và sau đó bị phá hủy hàng giờ sau đó ... vì vậy không chắc chắn về việc đầu tư thời gian, v.v., cho đĩa io. Tôi đánh giá cao đầu vào của mọi người và các đề xuất có vẻ như bản sửa lỗi có thể không còn hiệu lực ngay cả khi không thích hợp. cảm ơn lần nữa
j_mcnally
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.