常用操作合集四

我正在参加「金石计划」

写在前面

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

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

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

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

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

可能以前也有分享过一篇,有兴趣的小伙伴,可以查看这里:常用操作合集一常用操作合集二常用操作合集三

1.mysql死锁如何处理

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

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

sh 复制代码
# 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代理配置:

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
docckerFile 复制代码
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一下即可

bash 复制代码
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解析为变量连接符,所以服务器端接收数据时&符号以后的数据都会丢失。

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

ini 复制代码
data = data.replace(/+/g,  "%2B" );
data = data.replace(/&/g,  "%26" );

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

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

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

bash 复制代码
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 日志级别主要有以下几种:

makefile 复制代码
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-master 172.17.185.91
k8s-node01 172.17.185.92
k8s-node02 172.17.185.93
k8s-node03 172.17.185.94
  • 三、所有机器上执行如下命令:
css 复制代码
# 确保开启防火墙服务
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-文库怎么下载方法汇总

使用教程


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

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

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

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

相关推荐
坐吃山猪2 小时前
SpringBoot01-配置文件
java·开发语言
我叫汪枫3 小时前
《Java餐厅的待客之道:BIO, NIO, AIO三种服务模式的进化》
java·开发语言·nio
yaoxtao3 小时前
java.nio.file.InvalidPathException异常
java·linux·ubuntu
Swift社区4 小时前
从 JDK 1.8 切换到 JDK 21 时遇到 NoProviderFoundException 该如何解决?
java·开发语言
DKPT5 小时前
JVM中如何调优新生代和老生代?
java·jvm·笔记·学习·spring
phltxy5 小时前
JVM——Java虚拟机学习
java·jvm·学习
seabirdssss7 小时前
使用Spring Boot DevTools快速重启功能
java·spring boot·后端
喂完待续7 小时前
【序列晋升】29 Spring Cloud Task 微服务架构下的轻量级任务调度框架
java·spring·spring cloud·云原生·架构·big data·序列晋升
benben0447 小时前
ReAct模式解读
java·ai