最新文章
每日一技
领导力
  • 除了maxThreads,还有哪些Tomcat参数需要配置?

    除了 maxThreads(最大工作线程数),Tomcat 的 Connector 组件还有一系列核心参数直接影响并发能力、性能、稳定性、安全性,需结合业务场景配套配置。以下按「核心优先级」分类梳理关键参数,包含作用、默认值、调优建议和配置示例: 一、线程池 / 连接管理类(与 maxThreads 强关联,性能核心) 这类参数控制 Tomcat 线程池和连接的生命周期,是 maxThreads 的「配套参数」,必须同步调整。 参数名 核心作用 默认值 调优建议(按服务器配置) minSpareThreads 核心线程数(常驻线程,避免频繁创建 / 销毁线程) 10 4 核 8G → 50~100;8 核 16G → 100~200(约为 maxThreads 的 1/10~1/5) acceptCount 请求等待队列长度(线程池满时,新请求进入队列等待,队列满则拒绝请求) 100 4 核 8G → 500;8 核 16G → 800~1000(队列过长会增加响应时间,需平衡) maxConnections NIO/NIO2/APR 模式下允许的最大并发连接数(连接数≠线程数,非阻塞 IO 下一个线程可处理多个连接) 10000(NIO) 4 核 8G → 20000;8 核 16G → 50000(BIO 模式下该参数等于 maxThreads) threadPriority 工作线程优先级(1~10,10 最高) 5 保持默认 5(无需调整,过高可能抢占系统线程) maxKeepAliveRequests 单个长连接允许处理的最大请求数(HTTP/1.1 长连接复用) 100 调大至 500~1000(提升长连接复用率,减少建连开销) keepAliveTimeout 长连接空闲超时时间(ms),超时则关闭连接 60000 缩短至 30000(30 秒),避免空闲连接占用资源 connectionTimeout 连接超时时间(ms),客户端建立连接后未发送请求的超时时间 20000 保持 20000~30000(避免短超时导致正常请求被断开) 配置示例(外置 Tomcat server.xml): xml <Connector port="8080" protocol="org.apache.coyot……

    SE_Yang 2025-12-31
    12 0 0
  • X3850 X6 SSH 登录到IMM CLI 界面

                           X3850 X6 SSH 登录到IMM CLI 界面

    SE_Zhang 2025-12-31
    30 0 0
  • 如何判断设备是否存在不兼容问题?

    一、通用排查原则(所有场景适用) 在开始细分场景前,先通过以下 3 步排除非兼容问题(避免误判): 基础检查:确认设备通电 / 连接正常、无物理损坏(如接口松动、线缆破损),重启设备 / 软件 / 网络(很多临时故障可通过重启解决); 单一变量测试:只保留 “疑似不兼容的设备 / 软件”,断开其他无关设备(如排查打印机不兼容时,关闭其他 USB 设备),避免多因素干扰; 交叉验证:将 “疑似不兼容的 A 设备” 连接到 “已知正常的 B 环境”(如把报错的 U 盘插另一台电脑),或用 “已知正常的 C 设备” 替换 A(如用正常的鼠标替换疑似不兼容的鼠标),若仅在特定组合下出现问题,大概率是兼容冲突。 二、按场景细分:判断方法 + 工具 / 标准 (一)硬件层面:判断硬件与硬件 / 系统的兼容 核心判断依据:接口协议、硬件规格、驱动支持是否匹配,通过 “现象 + 工具 + 官方清单” 确认。 异常现象 排查步骤(判断兼容的关键操作) 工具 / 参考标准 设备无法识别(如 U 盘、显卡、打印机) 1. 换接口 / 线缆测试(如 USB 设备换另一个接口,显卡换 PCIe 插槽),排除接口 / 线缆故障; 2. 打开「设备管理器」(Win+X),查看是否有「黄色感叹号 / 问号」(未知设备 / 驱动异常); 3. 若显示 “未知设备”,尝试安装官网驱动,若安装后仍无法识别→兼容冲突。 - 工具:设备管理器(Win)、AIDA64(查看硬件规格); - 标准:主板 / 设备官网的「兼容清单」(如主板支持的内存规格、显卡支持的接口协议)。 硬件性能异常(卡顿、降频、功能失效) 1. 用专业工具测试性能(如显卡跑 3DMark、硬盘测 CrystalDiskMark),对比设备官方标称性能(如 DDR5 内存标称 4800MHz,实际仅跑 2400MHz); 2. 检查硬件规格是否匹配(如主板支持 PCIe 4.0,显卡是否也支持;CPU 是否支持主板的超频 / 内存频率); 3……

    SE-YangYao 2025-12-31
    11 0 0
  • Realtek 8922AE Ubuntu22.04 无WiFi驱动解决

    Realtek 8922AE,在下载驱动的时候可能有前缀rtw、RTL,具体我没太区分,尝试了好几个版本,现记录最傻瓜式的安装方式(如果是双系统,驱动的型号在Windows下高级网络设置-硬件和连接属性中可以看,在ubuntu中,本人设备是拯救者7000p,使用 lspci | grep -i Network 可看) 注意,确保你先使用某种方式能连上网(有线\手机USB) 首先需要设定BIOS的Secure Boot 为disabled 可通过指令查询: mokutil --sb-state 结果为SecureBoot disabled即可,否则先关机设置,拯救者是按F2进BIOS,备选方案是使用以下指令,将驱动对应的公钥(mok.pub)导入到系统中。导入后,后续还需要在计算机重启时进入 “Machine Owner Key (MOK)” 管理界面,选择注册刚刚导入的密钥,完成签名验证流程: sudo mokutil --import /var/lib/dkms/mok.pub 但我没尝试过备选,建议改SecureBoot,随后正式开始: git clone https://github.com/morrownr/rtw89.git cd rtw89 清理系统中可能存在的冲突驱动: sudo make cleanup_target_system 编译并安装驱动 make clean modules && sudo make install 安装固件 sudo make install_fw 复制配置文件 sudo cp -v rtw89.conf /etc/modprobe.d/ 到此可以选择modprobe加载内核模块,但当系统重启时,内核会自动扫描 /lib/modules/$(uname -r)/ 等默认目录中已安装的模块,并根据 /etc/modprobe.d/ 下的配置文件(包括你复制的rtw89.conf)来决定加载哪些模块。 所以最简单的,重启电脑就好了。 最后如果要卸载驱动: sudo make uninstall sudo rm -f /etc/modprobe.d/rtw89.conf

    SE_Meng 2025-12-31
    16 0 0
  • S9700下挂终端改变位置后网络出现部分中断

    问题描述 S9700交换机旁挂了UTM设备,将需要清洗的流量从S9700交换机引入UTM,再经过UTM处理后再引回S9700交换机。 以终端A的IP地址为源IP的流量从S9700交换机3口进入后,根据入口策略,流量将引入UTM设备做清洗,进入UTM设备的接口为1; 终端A位置改变后,IP地址不变,但是进入S9700的接口改变,调用的策略也发生改变, 以终端A的IP地址为源IP的流量从S9700交换机的4口进入后,根据入口策略,流量将引入UTM设备做清洗,进入UTM设备的接口为2; 改变位置后终端A无法访问总部网络。 告警信息 无 处理过程 分别在UTM设备和S9700设备上分析,发现从A发出的流量会被引入UTM设备,但是在UTM设备上会被丢弃。联系UTM厂家工程师,发现是UTM策略配置问题。A改变位置后,从2口进入UTM设备,根据原来的策略,流量应该从2口离开UTM设备进入S9700交换机,这样流量就会出现从UTM的2口进去,再从2口出来,UTM设备会认为这是路由欺骗,将会丢弃数据包。 根据A的IP地址做流量策略,让A的流量从UTM的2口进入,1口出,问题解决。 根因 1.可能是S9700上面的流量策略配置错误导致网络不通 2.可能是UTM上面的配置问题导致网络不通 建议与总结 网络不通时,逐跳排查故障,找到数据包传输中断的位置,从这里去排查问题

    SE_Gao 2025-12-31
    11 0 0
  • 网络可以没有冗余, 但不能没有STP!

    “交换机CPU突然飙到100%?”“全网Ping延迟上千毫秒,时通时断?”“监控录像花屏,摄像头频繁离线?” 这些症状,往往是 网络环路(Loop) 的典型表现。 而环路之所以频发,最常见的原因就是: STP(生成树协议)被人为关闭了! 很多网工朋友为了“快速接入设备”或“避免STP收敛慢”,直接在端口上执行 undo stp enable,殊不知,这等于拆掉了网络的“保险丝”。 今天就来聊聊:为什么 绝不能随意禁用STP,以及如何安全地优化它。 一、STP是干什么的? 核心功能:防环 当网络中存在冗余链路时,如果没有STP,数据包会无限转发,形成广播风暴: [SW-A] ←→ [SW-B]↑ ↑[PC1] [PC2] PC1发一个广播包 SW-A和SW-B都转发给对方 形成闭环,包越转越多 最终耗尽带宽和CPU ✅ STP的作用:自动阻塞一条冗余链路,逻辑上打破环路,同时保留物理冗余,用于故障切换。 二、谁在禁用STP?为什么? 常见场景: 典型错误配置: [Huawei] interface gigabitethernet 0/0/5[Huawei-GigabitEthernet0/0/5] undo stp enable ❌ 这个端口一旦接入另一个交换机,立即形成环路! 三、禁用STP的后果:广播风暴实测 实验环境: 两台S5700交换机,通过两条网线互连 关闭STP 现象: 连线瞬间,所有端口指示灯疯狂闪烁 交换机CPU从10%飙升至98% display interface 显示: Input: 1254321 packets/sec, 980 Mbps ↑↑↑ 正常应<10Mbps 全网丢包,业务中断 ⚠️ 一次误操作,可能让整个办公网瘫痪1小时以上。 四、正确做法:不是禁用,而是优化 ✅ 方案1:启用 PortFast + BPDU Guard 适用于接PC、打印机、摄像头的端口: [Huawei] interface gigabitethernet 0/0/1[ Huawei-GigabitEthernet0/0/1] stp edged-port enable # 相当于PortFast[ Huawei-GigabitEthernet0/0/1] stp root-protection # 可选[ Huawei-GigabitEthernet0/0/1] stp bpdu-protec……

    SE_Tianle 2025-12-31
    18 0 0
  • 【Linux我做主】进程实践:手动实现Shell

    进程实践:手动实现Shell 手动实现Shell github地址 0. 前言 一、Shell 基础架构与 Makefile 工程 1. 创建工作目录与测试Makefile文件 2. Shell 基础架构 二、交互问题 1. 命令行格式定制化 2. 读取输入的命令 3. 将以上逻辑抽象为 interact 交互函数 三、字符串解析问题 1. 字符串解析函数 2. 解析字符串后的执行逻辑 四、内建命令的执行 1. 命令执行总体框架 2. 内建命令 cd 的执行 3. 内建命令 export 的执行 4. 内建命令 echo 的执行 内建命令的执行完整代码实现与执行结果 五、普通命令的执行 六、改进事项 1. 进程替换出错时提示错误信息 3. 父进程等待结束后保存子进程的退出码 5. 为ls命令加上颜色高亮显示 6. shell 进程结束后释放环境变量表避免内存泄漏 七、完整代码实现 结语 手动实现Shell github地址 有梦想的电信狗 0. 前言 在学习 Linux 系统编程的过程中,Shell 是一个无法绕开的核心组件。它既是我们日常与操作系统交互最频繁的工具,也是理解 Linux 体系结构、进程模型、环境变量管理、程序加载与替换机制等关键知识点的窗口。 然而,光使用 Shell 是远远不够的。 只有亲手实现一个 Shell,才能真正理解: 为什么命令能够被识别? 普通命令与内建命令有什么本质区别? Shell 如何解析输入?参数是如何传递的? 程序替换(exec)到底做了什么? cd、export、echo 为什么不能交给子进程执行? 环境变量是如何在多个进程间传递的? 为什么每次 fork 之后都必须 wait? 我们平时敲的 ls --color 背后发生了什么? 本篇文章将带你从零开始,不依赖任何复杂库,仅使用 C 语言与系统调用,手动实现一个具备基本功能的小型 Shell,包括: 命令行提示符绘制 字符串读取与解析 内建命令实现(cd / echo / export) 子进程创建与普通命令执行 环境变量扩展 错误处理与退出码管理 内存管理与代码结构优化……

    SE_Gai 2025-12-31
    8 0 0
  • 交换机端口狂闪?因为这几个原因你没想到

    一、现象:端口狂闪,网络变慢 典型表现: ✅ 交换机某端口 TX/RX指示灯高频闪烁(远超正常通信频率) ✅ 同一VLAN内多台设备 网络延迟飙升或丢包 ✅ 核心交换机CPU利用率突然升高(display cpu-usage 显示 >80%) ✅ 用户无法获取IP(DHCP超时)、无法访问服务器 ✅ 使用display interface查看,In/Out Errors、CRC错误激增 🔍 关键判断: 如果单个端口狂闪但不影响其他区域 → 可能是该端口下设备异常 如果多个端口同时狂闪或全网卡顿 → 极可能是二层环路   二、根本原因:广播风暴 在正常网络中: 广播包(如ARP请求)从交换机发出 → 被目标设备响应 → 结束 但在二层环路中: [交换机] ←网线A→ [HUB] ←网线B→ [交换机] 一个广播包从交换机发出 → 经HUB复制 → 从另一条路径返回交换机 交换机再次转发 → 包又绕一圈回来 如此循环,广播包数量指数级增长 → 形成“广播风暴”,占满带宽,CPU忙于处理数据包,无法正常转发。   三、常见场景:都是“用户操作”惹的祸 场景1:私接HUB或小交换机 用户为了接更多设备(如打印机、监控), 自行购买HUB或二手交换机, 用一根网线两端都插在同一台交换机,或形成闭环。 场景2:双网卡设备桥接网络 某台PC同时连接办公网和测试网, 用户为“方便访问”,启用“网络桥接”功能, 相当于用PC做了一台透明交换机,形成环路。 场景3:工程调试后未拆除临时线 施工人员为测试,用两根网线连接两台交换机, 调试后忘记拆除,导致物理环路。   四、快速定位与解决步骤 第一步:登录交换机,查看端口流量 # 查看所有端口的流量统计 <Huawei> display interface brief # 关注: # InUti/OutUti(输入/输出利用率) # 若某端口持续 >50% 且波动剧烈 → 可疑 # 查看具体端口详情 <Huawei> display interface GigabitEthernet 0/0/5 # 关注……

    SE_YJ 2025-12-31
    15 0 0
  • 如何配置Tomcat的maxThreads参数?

    Tomcat 的 maxThreads 是 Connector 组件的核心性能参数,定义了处理 HTTP 请求的最大工作线程数,直接决定 Tomcat 能同时处理的请求数上限。配置该参数需结合服务器硬件、业务场景、并发量综合调整,以下是「配置方法、调优原则、验证方式、常见问题」的全维度指南。 一、核心认知:maxThreads 是什么? 作用:Tomcat 通过线程池管理工作线程,maxThreads 是线程池的「上限」,当并发请求数超过该值时,新请求会进入 acceptCount 等待队列,队列满则直接拒绝请求。 默认值:Tomcat 8/9/10 默认 maxThreads=200(BIO 模型)/ maxThreads=200(NIO 模型,NIO 还需配合 maxConnections 控制总连接数)。 核心关联参数: minSpareThreads:核心线程数(常驻线程,避免频繁创建 / 销毁); acceptCount:请求等待队列长度(线程池满时,请求排队的上限); maxConnections:NIO 模式下允许的最大连接数(超过则放入队列,与 maxThreads 配合控制并发)。 二、配置方法(2 种方式) 方式 1:修改 server.xml(全局配置,推荐) 这是最常用的方式,直接在 Connector 标签中配置 maxThreads: 打开 Tomcat 安装目录下的 conf/server.xml; 找到 <Connector> 标签,添加 / 修改 maxThreads 参数: xml <Service name="Catalina"> <!-- 核心 Connector 配置 --> <Connector port="8080" <!-- 监听端口 --> protocol="org.apache.coyote.http11.Http11NioProtocol" <!-- NIO 模型(生产首选) --> maxThreads="800" <!-- 核心:最大工作线程数 --> minSpareThreads="50" <!-- 核心线程数(建议为 maxThreads 的 1/10~1/5) --> acceptCount="500" ……

    SE_Yang 2025-12-30
    20 0 0