linux经常会用到的查看登陆用户、查看迸发量的命令

服务器状态监测与MySQL连接管理
本文介绍如何使用netstat命令监测服务器并发连接状态,包括查看URL请求详情、统计并发量及连接分类。同时,提供了检查MySQL连接量的方法,并展示了多种查看登录用户信息的命令,如w、who、last和lastlog,帮助管理员有效管理服务器资源。

查看迸发量:

netstat -pnt | grep :80

在这里插入图片描述

该命令列出了所有此时请求服务器url的用户详情,包括用户IP和状态等等,其中ESTABLISHED表示服务器正在被访问,还可以通过下边这个命令对迸发量进行统计:

netstat -pnt | grep :80 | wc -l

在这里插入图片描述

该命令可以统计服务器所有url被请求的数量,因为服务器本身占用一个连接,所以此时实际迸发数是23个用户访问,当关闭网页后输入命令会发现还是24个用户,实际上查看详细信息都是从ESTABLISHED变成了FIN_WAIT2超时状态,因为http有一个保持连接的时间,过一会再查看用户数就为1了,此时说明所有连接都彻底断开了,访问一个页面后再访问另一个页面,之前的http超时时间将加快,所以当连续访问网站时,连接总体上还是保持稳定的;

而 netstat -n | awk ‘/^tcp/ {++state[$NF]} END {for(key in state) print key,"\t",state[key]}’ 命令是将当前服务器所有url被请求的用户按状态分类,这里是关于netstat命令的详解,感兴趣的可以看看。

在这里插入图片描述

查看MySQL连接量:

netstat -anp | grep mysql | wc -l

查看登陆用户:

方法1:

w 【用户名】或者w 直接回车

直接回车是查看所有登录用户信息,只要登录过就会显示出来,加用户名就查看指定的用户。

在这里插入图片描述

命令输出项:

USER:登陆的用户名;

TTY :登陆终端;

FROM :从哪个IP地址登录;

LOGIN@ :登陆时间;

IDLE :用户闲置时间;

JCPU :指的是和该终端连接的所有进程占用的时间。这个时间里并不包括过去的后台作业时间,但却包括当前正在运行的后台作业所占用的时间;

PCPU :是指当前进程所占用的时间;

WHAT :当前正在运行的命令;

方法2:

格式:who 【用户名】

命令输出:

-用户名

-登录终端

-登录时间(登录来源IP地址)

在这里插入图片描述

方法3:查看当前登录和过去登录的用户信息

last

注释:last命令默认读取/var/log/wtmp文件数据

命令输出:

-用户名

-登录终端

-登录IP

-登录时间

-退出时间(在线时间)

在这里插入图片描述

方法4:查看所有用户最后一次登录时间

lastlog

注释:lastlog命令默认读取/var/log/lastlog文件内容

命令输出:

-用户名

-登录终端

-登录IP

-最后一次登录时间

在这里插入图片描述

### 解决Socket高并发连接的方法 #### BIO模型下的局限性 传统的BIO(Block Input Output)模式下,每当有一个客户端发起请求时,服务端就需要创建一个新的线程来处理该请求。这种方式在面对大并发连接时效率低下,因为每个新连接都会占用一定的内存资源,并且频繁地上下文切换也会消耗大的CPU时间[^4]。 #### NIO模型的优势 相比之下,在NIO(Non-blocking Input Output)环境下可以采用多路复用技术,通过单个或少的工作线程即可管理多个套接字连接。这不仅减少了线程开销还提高了系统的响应速度和服务能力。具体来说,Java中的`Selector`机制允许程序在一个单独的进程中监听多个通道的状态变化事件,从而实现了高效的I/O操作调度[^3]。 #### 使用Netty框架简化开发过程 为了更方便地构建高性能网络应用程序,推荐使用像Netty这样的异步事件驱动型网络应用框架来进行Socket编程。它内置了许多高级特性如自动化的流控制、心跳检测等功能,并提供了丰富的API接口使得开发者能够专注于核心逻辑而不必担心底层复杂的细节实现问题。 ```java // 创建ServerBootstrap对象并配置参数 EventLoopGroup bossGroup = new NioEventLoopGroup(); EventLoopGroup workerGroup = new NioEventLoopGroup(); try { ServerBootstrap b = new ServerBootstrap(); b.group(bossGroup, workerGroup) .channel(NioServerSocketChannel.class) .childHandler(new ChannelInitializer<SocketChannel>() { @Override public void initChannel(SocketChannel ch) throws Exception { Pipeline p = ch.pipeline(); // 添加处理器到管道中... } }); // 绑定端口等待客户端连接 ChannelFuture f = b.bind(PORT).sync(); } finally { // 关闭资源池 bossGroup.shutdownGracefully(); workerGroup.shutdownGracefully(); } ``` 上述代码展示了基于Netty搭建TCP服务器的基本流程,包括初始化两个不同的事件循环组分别用于接收新的连接(`boss`)和实际的数据传输(`worker`);指定要使用的通道类型为非阻塞式nio socket channel;设置当有新客户接入时执行的操作——向其对应的pipeline里加入自定义handler完成特定任务等。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值