网站链接数居高不下导致服务器卡死的情况排查

最近系统突然出现卡顿的情况,通过终端检查发现一些链接数特别高,但是一直降不下来,中途也尝试过将apache的参数调整但是一直解决不了问题。

为了解决卡住的问题做过几次尝试:

排查1
1.检查服务器硬盘容量是否用完。结果剩余空闲空间占比为80%,正常。
2.检查服务器内存使用量,16G内存使用了15G。调整服务器内存到32G。
3.检查服务器网卡工作模式速度是否正常。结果网卡速度为1000兆,正常。
4.检查防火墙配置及生效策略情况。结果为正常。

排查2:检查Apache配置。
1.检查apache配置中工作模式为 prefork 模式,调整客户端连接数最大值到20000,大约三个小时左右会用满,按这个结果意味着根本原因不在这里。
2.排查apache配置中keepAlive配置,默认是关闭的。我打开配置后,排查并没有好转。理论上所有链接超时后之后应该是会断开的。
3.排查TCP连接情况:watch -n 1 -d “ss|grep http”
通过分析链接数情况,了解大部分应该是门禁设备导致的,印象中之前链接数应该是很低的,为何突然最近出现问题,让我回想起前两天调整过数据库服务器防火墙策略。

排查3:检查apache网站的访问日志和错误日志。
通过排查apache错误日志,发现存在大量的数据库连接报错(此时此刻应该想到前两天防火墙策略调整的时间点刚好契合)。配合前面的门禁设备链接数不下降的问题,确认应该是门禁设备一直尝试提交数据但是数据库服务器没有回应,所以链接数一直增加。

通过排除数据库防火墙导致连接失败的问题,随之tcp连接数超高的问题也解决了。

总结:通过不停地尝试解决,从最基本的配置参数查起,再到错误日志,结合最近网络或者是防火墙的调整,大概能知道问题在哪里。

兄弟MFC-8535DN打印机更换得力粉盒不识别的操步骤

  • 打开打印机前盖

找到打印机前面板USB口下方有个按钮,按压打开粉盒更换前盖。

  • 点击按键区域#键

找到控制面板上电源键左下边有个#按键(默认是不亮的),长按5秒以上,会弹出重置菜单。

  • 下拉选择重置

在菜单中选择【TNR-U.HC】会提示重置,确认重置,提示重置后进入下一步。

  • 合上打印机前盖

合上前盖之后,打印机不再提示,粉盒图标显示黑色正常,则表示更换完成。

操作图示

postman通过代理服务器调试配置

一、背景介绍

由于申请的API接口服务器只针对指定的服务器IP开放了访问权限,现在想通过服务器代理方式来实现本地postman联调。

数据流程图

二、现状分析
为不影响生产服务器环境,不去改动生产服务器,我们需要使用ssh 开启socks5代理之后通过软件本地转换为http代理。ssh代理方式配置产生的代理为socks5代理,postman本身只支持http和https代理。

三、操作步骤

  • 下载代理转换软件Privoxy

https://www.privoxy.org/

  • 启动ssh的socks代理

运行电脑的cmd命令,输入以下内容并回车,按提示输入密码:

ssh -D 0.0.0.0:1080 root@183.232.231.174 -N -f

保持cmd窗口打开,不要关闭。

ssh参数说明:SSH -D [bind_address:]port

指定本地“动态”应用程序级端口转发。这通过分配一个套接字来侦听本地端的端口(可选地绑定到指定的bind_address)而起作用。每当与此端口建立连接时,该连接都会通过安全通道转发,然后使用应用程序协议确定从远程计算机连接到的位置。当前支持SOCKS4和SOCKS5协议,并且ssh将充当SOCKS服务器。只有root可以转发特权端口。动态端口转发也可以在配置文件中指定。

可以使用另一种语法指定IPv6地址:[bind_address /] port或将地址括在方括号中。

只有超级用户可以转发特权端口。默认情况下,本地端口是根据GatewayPorts设置绑定的。但是,可以使用显式bind_address将连接绑定到特定地址。bind_address的“ localhost”表示绑定的侦听端口仅供本地使用,而空地址或“ *”表示该端口应可从所有接口使用。

  • 安装及配置Privoxy

1.下载完成之后,正常安装好软件。

2.安装完成之后,打开软件安装路径,找到配置文件config.txt,添加一行配置(默认未配置)。

比如我的C:\Program Files (x86)\Privoxy\config.txt,在大约1186行增加:

forward-socks4a  /  127.0.0.1:1080 .

添加转发配置

修改完成之后,重新启动privoxy软件。

四、配置postman代理设置

配置postman代理

进入postman设置界面,选择自定义代理配置,勾选http和https,输入服务器为

127.0.0.1:8118

五、配置电脑全局代理,实现浏览器也可以打开调试界面

如果需要电脑浏览器也使用转换后的代理配置,可以打开电脑网络设置,找到网络配置界面,修改代理选项即可(其他保持不变),如下图:

电脑代理设置

(完)

系统开发中遇到的一些坑

最近在开发系统中,陆续因为用户使用终于到的一些问题,记录下来方便日后回顾。

一、在不同页面使用了相同的session名称做唯一性识别

使用session记录一串编码,在用户提交表单的时候检测是否重复提交,使用中因为偷懒把几乎所有页面上的session检测字段都设置为同一个名字,导致用户提交数据提示错误保存不了。

改进:根据不同的页面地址,设计同一个类别的标识作为session名称,但是名字个不相同,方便识别。

二、在同一套系统中,不同模块采用了同一个字段session来记录数据提交的模块名称

因系统开发设计时考虑到用户可能会去到不同的模块报名,但系统采用同一套账号密码登录,导致用户登陆后切换其他模块不需要再次登录,但是前一个模块的session标记的模块ID没有变更,对应模块功能也跟着带过来,用户发现数据混乱。

改进:根据用户访问模块不同获取不同的项目ID,而不是用户登录设置session来设置。

台式电脑安装CentOS Stream

需要测试通过IPV6做反向代理,目前使用的之前的一台电脑来做测试,发现安装过程中遇到一些问题,现在总结方便后面遇到问题处理参考。

一、下载系统

CentOS 官方网站提供的镜像列表中列出了大部分镜像站点,我这里选择去网易镜像站里面下载,一般来说速度还是很快的,特别是加上迅雷的加速。新版本的centos 没有之前的几个压缩版本的提供下载,默认提供的dvd版本已经到了9个G了。

https://www.centos.org/download/

二、刻录硬盘镜像

因为文件太大,刻录到光盘现在好像已经装不下了,所以我选择刻录到一个硬盘里面,我目前使用的是硬盘盒和之前拆笔记本电脑的一个320G的盘。

一开始通过软碟通软件刻录硬盘镜像,刻录速度是很快,基本可以到80M/s,问题就出在安装上,发现安装总是报错,通过网上的搜索教程,基本了解到是因为在windows下刻录光盘会导致label长度不能太长并且空格会被转义,导致路径有错误。后来通过下载FedoraMediaWriter这个软件来刻录,重新刻录好的安装非常顺畅。

FedoraMediaWriter软件运行界面

三、启动安装

安装过程中遇到一个很尴尬的问题,拆了主机发现忘记插上数据线,导致开始安装找不到安装的盘,重新关机去打开机箱去插线解决。

正常情况,安装就是下一步下一步,然后设置好电脑时区和root密码,然后等安装软件包,大概有半个小时可以装好。

四、基本配置

1.新建普通账号

默认情况下,桌面登录是不让root账号直接登录,第一次登录系统会提示谁在使用这个电脑,此过程中就是新建一个账号的过程,需要记住这个新的账号和密码。

2.配置网络

一般来说,网络配置的是动态获得,实际生产中,为了保证网络稳定,都需要手动配置网络,而不是采用DHCP,需要编辑文件 /etc/sysconfig/network-script/ifcfg-xxxx这个文件来配置网络。

因为centos8没法用systemctl restart network和service restart network,编辑完之后网络重启命令(enp0s3是网卡名称)

#nmcli c reload enp0s3

3.配置防火墙

从CentOS7开始,防火墙已经采用了firewall-cmd,我们如果需要开放某个服务,可以针对服务模式来开启端口或者是通过指定端口来开启。

以下是网站服务开启http和https ,对应端口分别为80、443,其他类似

添加服务http到防火墙列表

#firewall-cmd --add-service=http --permanent

重新加载防火墙配置

#firewall-cmd --reload