linux用戶連接數
A. linuxnfs最大連接數
1、查看最大連接數,1024是指當前用戶的進程最多允許帆謹液同時打開1024個文件,其實真正的數量是小於這個的,得去掉每個進程的標准輸入,標准輸出,標准錯誤,伺服器監聽socket,進程間通態物訊的unix域socket等文件,這樣剩下的可用文件數大概會在1014左右,也就是說當前用戶的最大打開晌前文件數為1014個,即最大支持1014個並發連接。
2、修改最大連接數,想支持更大的tcp並發連接,必須更改對當前用戶的進程同時打開的文件數量的軟限制(softlimit)和硬限制(hardlimit)。
B. linux如何查詢mysql中的連接數及最大連接數
查看最大連接數
mysqladmin -uroot -p processlist
一般來說提示的thread數目就是當前的連接數
或者是登錄到mysql客戶端後,使用status命令也能獲得thread連接數以及當前連接的id。
[root@localhost bin]# mysql -h localhost -u root -p123456
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 96718
Server version: 5.0.84 Source distribution
Type 『help;『 or 『\h『 for help. Type 『\c『 to clear the current input statement.
mysql> status
--------------
mysql Ver 14.12 Distrib 5.0.84, for redhat-linux-gnu (x86_64) using readline 5.1
Connection id: 96718
Current database:
Current user: root@localhost
SSL: Not in use
Current pager: stdout
Using outfile: 『『
Using delimiter: ;
Server version: 5.0.84 Source distribution
Protocol version: 10
Connection: Localhost via UNIX socket
Server characterset: latin1
Db characterset: latin1
Client characterset: latin1
Conn. characterset: latin1
UNIX socket: /var/lib/mysql/mysql.sock
Uptime: 1 day 17 hours 5 min 29 sec
Threads: 19 Questions: 8942485 Slow queries: 0 Opens: 3496 Flush tables: 1 Open tables: 64 Queries per second avg: 60.451
--------------
命令: show processlist;
或者 # mysqladmin -uroot -p密碼 processlist
如果是root帳號,你能看到所有用戶的當前連接。如果是其它普通帳號,只能看到自己佔用的連接。
show processlist;只列出前100條,如果想全列出請使用show full processlist;
mysql> show processlist;
命令: show status;
或者 # mysqladmin -uroot -p密碼 status
Aborted_clients 由於客戶沒有正確關閉連接已經死掉,已經放棄的連接數量。
Aborted_connects 嘗試已經失敗的MySQL伺服器的連接的次數。
Connections 試圖連接MySQL伺服器的次數。
Created_tmp_tables 當執行語句時,已經被創造了的隱含臨時表的數量。
Delayed_insert_threads 正在使用的延遲插入處理器線程的數量。
Delayed_writes 用INSERT DELAYED寫入的行數。
Delayed_errors 用INSERT DELAYED寫入的發生某些錯誤(可能重復鍵值)的行數。
Flush_commands 執行FLUSH命令的次數。
Handler_delete 請求從一張表中刪除行的次數。
Handler_read_first 請求讀入表中第一行的次數。
Handler_read_key 請求數字基於鍵讀行。
Handler_read_next 請求讀入基於一個鍵的一行的次數。
Handler_read_rnd 請求讀入基於一個固定位置的一行的次數。
Handler_update 請求更新表中一行的次數。
Handler_write 請求向表中插入一行的次數。
Key_blocks_used 用於關鍵字緩存的塊的數量。
Key_read_requests 請求從緩存讀入一個鍵值的次數。
Key_reads 從磁碟物理讀入一個鍵值的次數。
Key_write_requests 請求將一個關鍵字塊寫入緩存次數。
Key_writes 將一個鍵值塊物理寫入磁碟的次數。
Max_used_connections 同時使用的連接的最大數目。
Not_flushed_key_blocks 在鍵緩存中已經改變但是還沒被清空到磁碟上的鍵塊。
Not_flushed_delayed_rows 在INSERT DELAY隊列中等待寫入的行的數量。
Open_tables 打開表的數量。
Open_files 打開文件的數量。
Open_streams 打開流的數量(主要用於日誌記載)
Opened_tables 已經打開的表的數量。
Questions 發往伺服器的查詢的數量。
Slow_queries 要花超過long_query_time時間的查詢數量。
Threads_connected 當前打開的連接的數量。
Threads_running 不在睡眠的線程數量。
Uptime 伺服器工作了多少秒。
C. Linux系統中如何查看TCP連接數
本文詳細介紹如何在Linux系統中查看TCP連接數。以下內容分為幾部分:查看哪些IP連接本機、查看TCP連接數,以及如何合理設置Apache HTTPD的最大連接數。
一、查看哪些IP連接本機
在Linux系統中,可以使用命令行工具來查找與本機建立連接的IP地址。
二、查看TCP連接數
1) 統計80埠連接數
使用以下命令來統計與80埠相關的連接總數:
netstat -an | grep "80" | wc -l
2)統計httpd協議連接數
若需查看特定協議(如httpd)的連接數,可以使用類似的方法進行篩選:
netstat -an | grep "httpd" | wc -l
3)、統計已連接上的,狀態為"established"
要查看已建立的TCP連接數量,可以使用:
netstat -an | grep "ESTABLISHED" | wc -l
4)、查出哪個IP地址連接最多,將其封了.
查找連接數最多的IP地址,可以結合上文方法進行:
netstat -an | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr
1、查看apache當前並發訪問數:
對比httpd.conf中MaxClients的數字差距,以了解當前並發訪問情況。
2、查看有多少個進程數:
可以使用ps或top命令來查看Apache進程數量,這有助於了解當前處理請求的負載。
使用如下參數查看數據:
netstat -an | wc -l
統計httpd進程數(即prefork模式下Apache能夠處理的並發請求數):
這表示Apache能夠處理的最大並發請求數,通常與系統資源、配置參數及負載情況相關。
在遇到大量TIME_WAIT狀態的連接時,可以調整內核參數解決這一問題。
例如,編輯內核參數文件,加入以下內容:
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 10
net.ipv4.tcp_keepalive_time = 600
net.ipv4.tcp_keepalive_probes = 3
net.ipv4.tcp_keepalive_intvl = 75
然後執行 /sbin/sysctl -p 讓參數生效。
下面附上TIME_WAIT狀態的意義:
客戶端與伺服器端建立連接後關閉SOCKET後,伺服器端連接的埠狀態為TIME_WAIT。
並非所有執行主動關閉的socket都會進入TIME_WAIT狀態,存在特定情況可以使主動關閉的socket直接進入CLOSED狀態。
主動關閉的一方在發送最後一個ack後進入TIME_WAIT狀態,停留2MSL時間。這是TCP/IP設計的一部分,旨在防止上一次連接中的包迷路後重新出現,影響新連接。
此外,TCP/IP設計者考慮了兩個關鍵原因:防止上一次連接中的重復包影響新連接,以及確保可靠的關閉TCP連接。主動方發送的最後一個ack(fin)可能丟失,被動方重新發送fin時,如果主動方處於CLOSED狀態,就會響應rst而不是ack。因此,主動方要處於TIME_WAIT狀態,而不是CLOSED狀態。
設置Apache HTTPD的最大連接數時,應考慮伺服器資源限制,如CPU、內存、帶寬等。可以通過執行以下命令查看當前連接數:
netstat -an | grep "LISTEN" | wc -l
在Linux中,MaxClients默認最大為250,超過這個值可以通過顯式設置ServerLimit來調整,且ServerLimit應不小於MaxClients。
合理設置MaxClients值時,建議先根據伺服器硬體性能和當前資源使用情況進行評估,避免因設置過高而導致內存泄露等問題。
在實際操作中,可以結合性能測試和監控工具,逐步調整MaxClients值,以找到最優化的設置,確保伺服器在高負載情況下仍能保持穩定運行。
D. linux下共享內存允許的連接數有限制嗎
對於64位進程,同一進程可連接最多268435456個共享內存段;
對於32位進程,同一進程可連接最多11個共享內存段,除非使用擴展的shmat;
上述限制對於64位應用不會帶來麻煩,因為可供連接的數量已經足夠大了;但對於32位應用,卻很容易帶來意外的問題,因為最大的連接數量只有11個。
下面的常式test02.c演示了這個問題,為了精簡代碼,它反復連接的是同一個共享內存對象;實際上,無論所連接的共享內存對象是否相同,該限制制約的是連接次數:
#include <stdio.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#define MAX_ATTACH_NUM 15
void main(int argc, char* argv[])
{
key_t mem_key;
long mem_id;
void* mem_addr[MAX_ATTACH_NUM];
int i;
if ( ( mem_key = ftok("/tmp/mykeyfile", 1) ) == (key_t)(-1) ) {
printf("Failed to generate shared memory access key, ERRNO=%d\n",
errno);
goto MOD_EXIT;
}
if ( ( mem_id = shmget(mem_key, 256, IPC_CREAT) ) == (-1) ) {
printf("Failed to obtain shared memory ID, ERRNO=%d\n", errno);
goto MOD_EXIT;
}
for ( i=1; i<=MAX_ATTACH_NUM; i++ ) {
if ( ( mem_addr[i] = (void *)shmat(mem_id, 0, 0) ) == (void *)(-1) )
printf("Failed to attach shared memory, times [%02d], errno:%d\n", i,
errno);
else
printf("Successfully attached shared memory, times [%02d]\n", i);
}
MOD_EXIT:
shmctl(mem_id, IPC_RMID, NULL);
}