bạn gần như ở đó, không quan trọng nếu là máy ảo hay máy vật lý, những cài đặt đó luôn có thể thay đổi.
Tôi sẽ chỉ ra 3 phương pháp.
Một số thông tin trước:
1) Tốt hơn là thực thi như root, nếu có thể.
2) / Proc trên unix không phải là một hệ thống tệp thực, nó là một hệ thống tệp hạt nhân trong bộ nhớ, nhưng nó có vẻ giống như một hệ thống tệp đĩa bình thường. Bạn có thể gọi nó là 'hệ thống tệp giả' hoặc 'hệ thống tệp đặc biệt', bạn không thể chỉnh sửa các tệp giả mạo đó bằng vi hoặc bất kỳ trình chỉnh sửa nào khác, vì chúng không phải là tệp, chúng trông giống như tệp. Tôi mắc kẹt với cùng một vấn đề năm trước.
Nhưng thật đơn giản để thay đổi giá trị của chúng, chỉ cần một loại 'cơ học' khác để chỉnh sửa chúng.
Tôi sẽ giải thích: Đầu tiên, cần phải là root: (sudo không hoạt động trong một số bản phát hành, nhưng không phải trên một số bản phân phối khác như bạn đã thử, phương pháp đầu tiên này là phổ biến và hoạt động trên mọi Linux, macOS hoặc bất kỳ nền tảng Unix nào Hy vọng bạn có quyền truy cập vào mật khẩu root.
Tiến hành nhanh chóng:
$ su root
Nhập mật khẩu root.
Bây giờ bạn đã root, hãy kiểm tra giá trị hiện tại của: / Proc / sys / vm / max_map_count
$ cat /proc/sys/vm/max_map_count
65536
Hãy thay đổi nó:
echo 262144 > /proc/sys/vm/max_map_count
Hãy xác minh:
cat /proc/sys/vm/max_map_count
262144
Xong rôi! Và nó đã được áp dụng và chức năng. Bằng cách thay đổi giá trị của bất kỳ tệp giả nào trong / Proc, cài đặt sẽ hoạt động ngay lập tức. Nhưng họ không kiên trì sau khi khởi động lại. Bạn có thể chơi với các giá trị và đo lường thay đổi hiệu suất tại elasticearh hoặc bất kỳ số liệu ứng dụng hoặc hệ thống nào khác. Hãy điều chỉnh hệ thống của bạn, viết các giá trị lên một số giấy, giữ các giá trị tốt nhất. Trong bất kỳ sai lầm nào, hãy khởi động lại và tất cả chúng sẽ trở về giá trị ban đầu và bắt đầu lại cho đến khi tất cả các giá trị mong muốn là tối ưu. Có rất nhiều tham số có thể điều chỉnh đĩa và bộ nhớ trong / Proc. Và họ tạo ra sự khác biệt lớn và tăng hiệu suất nếu bạn điều chỉnh chúng tốt (và có thời gian cho nó). Bạn đang đi đúng hướng.
Khi hài lòng, hãy làm cho chúng vĩnh viễn:
Phương pháp đầu tiên:
sử dụng /etc/rc.local
vi /etc/rc.local
đặt tất cả các tham số trong tập tin RC.local, ví dụ:
echo 220000000 > /proc/sys/vm/dirty_background_bytes
echo 320000000 > /proc/sys/vm/dirty_bytes
echo 0 > /proc/sys/vm/dirty_background_ratio
echo 0 > /proc/sys/vm/dirty_ratio
echo 500 > /proc/sys/vm/dirty_writeback_centisecs
echo 4500 > /proc/sys/vm/dirty_expire_centisecs
echo 1 > /proc/sys/net/ipv4/tcp_rfc1337
echo 10 > /proc/sys/vm/swappiness
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo 120 > /proc/sys/net/ipv4/tcp_keepalive_time
echo 0 > /proc/sys/vm/zone_reclaim_mode
echo deadline > /sys/block/sda/queue/scheduler
echo 8 > /sys/class/block/sda/queue/read_ahead_kb
echo 1048575 > /proc/sys/vm/max_map_count
thoát vi biên tập lưu tập tin.
Các tham số đó sẽ được đặt trên mỗi lần khởi động lại, SAU tất cả các dịch vụ init đã bắt đầu, ngay trước khi dấu nhắc đăng nhập hiển thị.
( /etc/rc.local file được thực thi sau khi tất cả các dịch vụ linux khởi động, nó có thể không hoạt động nếu elaticsearch bắt đầu trước khi nó là một dịch vụ, nhưng phương pháp này có thể hữu ích trong một thiết lập khác nếu bạn cần trong tương lai hoặc bạn có thể sử dụng như thế này bằng cách đặt chúng bên trong tập lệnh init elearchearch của bạn, bởi vì tập lệnh init chạy dưới dạng root, do đó, đây là cú pháp tương tự ở trên để sử dụng bên trong tập lệnh init)
Bạn cũng có thể sao chép chúng ngay bây giờ và dán chúng để thay đổi ngay lập tức. Các tham số trên là hợp lệ, điều chỉnh và chạy trên máy chủ cassandra apache của tôi. Nếu bạn muốn, hãy thử chúng như một điểm khởi đầu để điều chỉnh của bạn.
Phương pháp thứ hai để làm cho chúng vĩnh viễn:
Các tham số bây giờ sẽ được đặt TRƯỚC bất kỳ dịch vụ khởi động nào trên linux.
Chỉnh sửa /etc/sysctl.conf , đặt tham số bên trong
vm.max_map_count=1048575
vm.zone_reclaim_mode=0
vm.dirty_background_bytes=220000000
vm.dirty_background_ratio=0
vm.dirty_bytes=320000000
vm.dirty_ratio=0
vm.swappiness=10
tiếp tục với những người khác, lưu /etc/sysctl.conf , khởi động lại máy chủ của bạn để áp dụng các thay đổi hoặc thực hiện: sysctl -p để áp dụng các thay đổi mà không cần khởi động lại. Họ sẽ được vĩnh viễn trên các lần khởi động lại.
Hai phương pháp trên là commom nhất. Có một cái khác, và nó có thể phù hợp với bạn, đó là bằng cách sử dụng sudo , gần giống như bạn đang làm:
thay vì:
sudo sysctl -w vm.max_map_count=262144
thử:
echo 262144 | sudo tee /proc/sys/vm/max_map_count
Nó hoạt động trên Ubuntu.
Kiểm chứng:
user@naos:~$ cat /proc/sys/vm/max_map_count
262144
Hy vọng tôi đã giúp được cách nào đó, ít nhất là bằng cách đưa ra 3 lựa chọn khác nhau để giải quyết vấn đề, vì câu hỏi của bạn đã gần một năm rồi;)
Trân trọng, Rafael Prado