Điểm:0

CentOS: Redis giới hạn kết nối máy khách tối đa

lá cờ um

Tôi đang sử dụng máy chủ bộ nhớ đệm Redis trên CentOS, nơi Redis chấp nhận các kết nối máy khách trên cổng TCP nghe được định cấu hình. Tôi đang cố gắng tìm ra các giới hạn được hệ điều hành áp dụng cho số lượng kết nối được phép tới một cổng được định cấu hình duy nhất để làm lại.

Người dùng đang được sử dụng là nguồn gốc như hình:

[root@server-001]# ps -ef | grep -i redis 
gốc 19595 1 9 tháng 626 ? 09:43:07 /usr/local/bin/redis-server 0.0.0.0:6379

Bây giờ tôi bị lừa bởi nhiều yếu tố:

Thứ nhất: giá trị của file-max là:

[root@server-001]# mèo /proc/sys/fs/file-max
6518496

thứ 2: giá trị của giới hạn.conf:

[root@server-001]# mèo /etc/security/limits.d/20-nproc.conf 
# Giới hạn mặc định cho số lượng quy trình của người dùng để ngăn chặn
# bom ngã ba tình cờ.
# Xem rhbz #432903 để biết lý do.

* mềm nproc 4096
root mềm nproc không giới hạn

Thứ 3: Giới hạn mềm và cứng của bộ mô tả tệp:

[root@server-001]# ulimit -Hn
4096
[root@server-001]# ulimit -Sn
1024

Bây giờ, khi biết rằng yếu tố thực sự giới hạn kết nối với một cổng là bộ mô tả tệp, tôi phải thay đổi cái nào để đảm bảo rằng máy chủ redis chấp nhận càng nhiều máy khách càng tốt?

Điểm:1
lá cờ it

sử dụng khách hàng tối đa 4096 trên redis.conf

vô hiệu điều chỉnhOpenFilesLimit(void) {
rlim_t maxfiles = server.maxclients+CONFIG_MIN_RESERVED_FDS;
giới hạn struct rlimit;

if (getrlimit(RLIMIT_NOFILE,&limit) == -1) {
    serverLog(LL_WARNING,"Không thể đạt được giới hạn NOFILE hiện tại (%s), giả sử là 1024 và đặt cấu hình máy khách tối đa tương ứng.",
        strerror(errno));
    server.maxclients = 1024-CONFIG_MIN_RESERVED_FDS;
} khác {
    rlim_t oldlimit = limit.rlim_cur;

    /* Đặt số lượng tệp tối đa nếu giới hạn hiện tại không đủ
     * cho nhu cầu của chúng tôi. */
    if (oldlimit < maxfiles) {
        rlim_t giới hạn tốt nhất;
        int setrlimit_error = 0;

        /* Cố gắng đặt giới hạn tệp khớp với 'maxfiles' hoặc ít nhất
         * đến giá trị cao hơn được hỗ trợ ít hơn maxfiles. */
        bestlimit = maxfiles;
        while(bestlimit > oldlimit) {
            rlim_t decr_step = 16;

            limit.rlim_cur = bestlimit;
            giới hạn.rlim_max = giới hạn tốt nhất;
            if (setrlimit(RLIMIT_NOFILE,&limit) != -1) ngắt;
            setrlimit_error = errno;

            /* Chúng tôi không thể đặt giới hạn tệp thành 'bestlimit'. thử với một
             * giảm giới hạn nhỏ hơn bằng một vài FD trên mỗi lần lặp. */
            ngắt if (bestlimit < decr_step);
            bestlimit -= decr_step;
        }

        /* Giả sử rằng giới hạn chúng ta nhận được ban đầu vẫn hợp lệ nếu
         * lần thử cuối cùng của chúng tôi thậm chí còn thấp hơn. */
        nếu (giới hạn tốt nhất < giới hạn cũ) giới hạn tốt nhất = giới hạn cũ;

        if (bestlimit < maxfiles) {
            không dấu int old_maxclients = server.maxclients;
            server.maxclients = bestlimit-CONFIG_MIN_RESERVED_FDS;
            /* maxclients không được ký nên có thể bị tràn: theo thứ tự
             * để kiểm tra xem maxclients hiện có nhỏ hơn 1 không
             * chúng tôi kiểm tra gián tiếp qua bestlimit. */
            nếu (giới hạn tốt nhất <= CONFIG_MIN_RESERVED_FDS) {
                serverLog(LL_WARNING,"'ulimit -n' hiện tại của bạn "
                    "của %llu không đủ để máy chủ khởi động."
                    "Vui lòng tăng giới hạn tệp đang mở của bạn lên ít nhất"
                    "%llu. Đang thoát.",
                    (dài dài không dấu) giới hạn cũ,
                    (không dấu dài dài) maxfiles);
                thoát(1);
            }
            serverLog(LL_WARNING,"Bạn đã yêu cầu khách hàng tối đa là %d "
                "yêu cầu ít nhất %llu bộ mô tả tệp tối đa.",
                old_maxclient,
                (không dấu dài dài) maxfiles);
            serverLog(LL_WARNING,"Máy chủ không thể đặt tệp mở tối đa "
                "đến %llu do lỗi hệ điều hành: %s.",
                (dài dài không dấu) maxfiles, strerror(setrlimit_error));
            serverLog(LL_WARNING,"Tệp mở tối đa hiện tại là %llu."
                "maxclients đã được giảm xuống %d để bù đắp cho"
                "giới hạn thấp."
                "Nếu bạn cần khách hàng tối đa cao hơn, hãy tăng 'ulimit -n'.",
                (dài không dấu) bestlimit, server.maxclients);
        } khác {
            serverLog(LL_NOTICE,"Tăng số lượng tệp đang mở tối đa "
                "thành %llu (ban đầu được đặt thành %llu).",
                (không dấu dài dài) maxfiles,
                (unsigned long long) oldlimit);
        }
    }
}

}

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.