likes
comments
collection
share

常用操作合集四

作者站长头像
站长
· 阅读数 1

写在前面

在工作中,我们可能会遇到一些问题,然后通过自己得一顿操作,最终把问题解决了。

可能在一两天之内,我们还是会记得解决这些问题的方法,但是过了一段时间之后,基本上都忘光了。

所以这里,我们应该要养成一个良好的习惯,把每次遇到的问题,如何解决的,都记录下。下次再看文档,这样就想起来了。

<<千与千寻>>有些事情是不可能忘记的,只是一时想不起来

下面,就分享一下,我遇到的一些问题,和相关的解决方法。

1.mysql死锁如何处理

把mysql中产生死锁的事务进程干掉,所以记录一下sql

-- 查看数据库当前的进程
show processlist;
-- 当前运行的所有事务
SELECT * FROM information_schema.INNODB_LOCKs;
-- 当前出现的锁
SELECT * FROM information_schema.INNODB_LOCK_waits;
-- 锁等待的对应关系
SELECT * FROM information_schema.INNODB_TRX;
-- 查询产生锁的具体sql
select 
    a.trx_id 事务id ,
    a.trx_mysql_thread_id 事务线程id,
    a.trx_query 事务sql 
from 
    INFORMATION_SCHEMA.INNODB_LOCKS b,
    INFORMATION_SCHEMA.innodb_trx a 
where 
    b.lock_trx_id=a.trx_id;
-- !!!
select concat('KILL ',a.trx_mysql_thread_id ,';') 
    from INFORMATION_SCHEMA.INNODB_LOCKS b,INFORMATION_SCHEMA.innodb_trx a 
    where b.lock_trx_id=a.trx_id;
-- 杀掉死锁进程
kill {thread_id};

2.阿波罗注册中心部署

部署文档

Quick Start安装包,大家只需要下载到本地,就可以直接使用,免去了编译、打包过程。

安装包共50M,如果访问github网速不给力的话,可以从百度网盘下载。

  1. 从GitHub下载

  2. 从百度网盘下载

    • 通过网盘链接下载,提取码: 9wwe
    • 下载到本地后,在本地解压apollo-quick-start.zip
  3. 为啥安装包要58M这么大?

    • 因为这是一个可以自启动的jar包,里面包含了所有依赖jar包以及一个内置的tomcat容器

nginx代理,8070,出现某些接口访问404,原因是丢失了 /apollo 访问前缀导致

所以要在启动的时候,指定访问前缀-Dserver.servlet.context-path=/apollo

# 185行
export JAVA_OPTS="$PORTAL_JAVA_OPTS -Dlogging.file.name=./apollo-portal.log -Dserver.port=8070 -Dserver.servlet.context-path=/apollo -Dspring.profiles.group.github=$spring_profiles_group_github -Dspring.datasource.url=$apollo_portal_db_url -Dspring.datasource.username=$apollo_portal_db_username -Dspring.datasource.password=$apollo_portal_db_password"

加上项目访问前缀-Dserver.servlet.context-path=/apollo

nginx代理配置:

location /apollo/ {
    proxy_pass http://127.0.0.1:8070/apollo/;
}

3.如何基于基础镜像,添加一些额外的功能?

很多时候,我们可能会到docker hub上面拉取一些基础镜像,例如nginx这些。

这些nginx镜像,一般来说体积都相对的较小,传输也是比较方便,更受开发者的青睐。毕竟自己去制作一个nginx镜像,体积可能相对较大。

但是这些nginx镜像,由于体积相对较小,是因为精简了很多命令,少了很多功能。例如,unzip,telnet等功能,是没有的。

那我们怎么给这个nginx基础镜像,添加unzip,telnet等功能呢?

我们可以这么干,创建一个 Dockerfile,以该nginx镜像作为基础镜像,将unzip,telnet等功能添加进去即可。例如这样:

  • Dockerfile
FROM nginx:1.25.1
COPY zip  /usr/bin
COPY unzip  /usr/bin
COPY telnet  /usr/bin

nginx:1.25.1,这个镜像可以直接从docker hub上面拉取即可:

docker pull nginx:1.25.1

注:zipunziptelnet这些文件,可以找一台相同架构的linux服务器(x86),在/usr/bin目录下面拉取出来,即可。

然后重新build一下即可

docker build -t llsydn/nginx:1.25.1 -f ./Dockerfile .

4.Ajax出现Post数据时+和&符号变空格的解决办法

采用Ajax传递数据时,通常会将数据整理为data="var1=abc&var2=def"。而当数据中存在加号(+)或是连接符(&)时,服务器端接收数据时会有部分数据丢失现象。

分析一下Ajax传递数据的格式与Javascript的语法不难发现:

  1. "+"号:JavaScript解析为字符串连接符,所以服务器端接收数据时"+"会丢失。
  2. "&":JavaScript解析为变量连接符,所以服务器端接收数据时&符号以后的数据都会丢失。

解决办法也相当简单,只需要为+与&符号编码即可:

data = data.replace(/+/g,  "%2B" );
data = data.replace(/&/g,  "%26" );

5.nginx监控ie,360兼容浏览器实现跳转

server{
    ...
   if ($http_user_agent ~* "(MSIE|trident)") {  
        return 301 http://$host/index.html;  
    }
    ..
}

上面是针对所有请求,进行拦截

server{
    ...
  
    location /llsydn {
        if ($http_user_agent ~* "(MSIE|trident)") {  
            return 301 http://$host/index.html;  
        }
        proxy_set_header Host       $host;
        proxy_pass http://127.0.0.1:8083;
    }
    ..
}

上面是针对/llsydn访问前缀的请求,进行拦截

6.logging日志级别

Logging 日志级别主要有以下几种:

1.TRACE:最低级别,主要用于记录程序运行时的调试信息,通常只有在调试时才会记录此类日志。
2.DEBUG:调试级别,主要是用于代码的调试和问题排查,记录程序的详细状态和变量值等。
3.INFO:信息级别,主要用于记录程序运行过程中的状态信息如启动信息、配置加载、HTTP 请求处理状态等。
4.WARN:警告级别,主要用于记录应用程序中非致命的错误和异常,比如某个方法调用失败、硬件资源占用过大等。
5.ERROR:最高级别,主要用于记录严重的错误和异常信息,如系统崩溃、功能无法实现、关键数据丢失等在应用程序中设置日志级别时,通常需要根据具体的需求选择适当的级别。对于生产环境,一般建议将日志级别设置为INFO或WARN,以避免记录太多无用的日志信息;而在开发和测试阶段,可以将日志级别设置为 DEBUG或TRACE,以便更好地调试和问题排查。

7.oauth2的4种授权模式说明

文档说明

感觉这篇文章总结起来还是,挺不错的。有兴趣的小伙伴可以去看看!!!

8.firewalld配置只允许指定IP地址访问

防火墙配置说明

9.k8s开启防火墙配置

  • 一、官方的端口说明

关于端口的官方说明可见地址:点击查看

  • 二、假设k8s部署情况如下:
主机名主机IP
k8s-master172.17.185.91
k8s-node01172.17.185.92
k8s-node02172.17.185.93
k8s-node03172.17.185.94
  • 三、所有机器上执行如下命令:
# 确保开启防火墙服务
systemctl restart firewalld

# 将集群内所有的节点IP配置到防火墙可信区中
firewall-cmd --permanent --zone=trusted --add-source=172.17.185.91
firewall-cmd --permanent --zone=trusted --add-source=172.17.185.92
firewall-cmd --permanent --zone=trusted --add-source=172.17.185.93
firewall-cmd --permanent --zone=trusted --add-source=172.17.185.94

# 增加防火墙规则
firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 1 -j ACCEPT -m comment --comment "kube-proxy redirects"   #这个规则的目的是允许 kube-proxy 重定向流量
firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 1  -j ACCEPT -m comment --comment "docker subnet"     #这个规则的目的是允许 Docker 容器子网之间的流量通信

# 设置防火墙伪装ip, 打开NAT,默认是关闭状态
firewall-cmd --add-masquerade --permanent

# 所有k8s的NodePort端口添加到例外
firewall-cmd --permanent --zone=public --add-port=30000-32767/tcp

# 重新加载配置
firewall-cmd --reload

firewall-cmd --zone=trusted --list-all
firewall-cmd --direct --get-all-rules
firewall-cmd --list-ports #查看开放端口
firewall-cmd --list-services #查看services
firewall-cmd --add-port=2375/tcp --zone=public --permanent #添加开放端口
  • 四、防火墙相关操作

参考地址

注:

1.需要在所有节点上执行。

2.nodeport端口,按需要进行增加配置即可。

10.Tools-文库怎么下载方法汇总

使用教程

11.解决网站禁止F12,右键打开浏览器控制台

在爬取一些网页的时候F12快捷键不能使用,不能打开调试界面 解决办法:以谷歌浏览器为例,左上角选项—更多工具–开发者工具或者使用ctrl+shift+I快捷键打开


好了,以上就是我个人的实操了。可能有些不对,大家伙,轻点喷!!!

个人理解,可能也不够全面,班门弄斧了。

好了,今天就先到这里了!!!^_^

如果觉得有收获的,帮忙点赞、评论、收藏一下,再走呗!!!

常用操作合集四