常用操作合集四

我正在参加「金石计划」

写在前面

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

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

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

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

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

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

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-文库怎么下载方法汇总

使用教程


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

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

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

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

相关推荐
P.H. Infinity10 分钟前
【RabbitMQ】04-发送者可靠性
java·rabbitmq·java-rabbitmq
生命几十年3万天14 分钟前
java的threadlocal为何内存泄漏
java
caridle26 分钟前
教程:使用 InterBase Express 访问数据库(五):TIBTransaction
java·数据库·express
^velpro^31 分钟前
数据库连接池的创建
java·开发语言·数据库
苹果醋335 分钟前
Java8->Java19的初步探索
java·运维·spring boot·mysql·nginx
秋の花39 分钟前
【JAVA基础】Java集合基础
java·开发语言·windows
小松学前端42 分钟前
第六章 7.0 LinkList
java·开发语言·网络
Wx-bishekaifayuan1 小时前
django电商易购系统-计算机设计毕业源码61059
java·spring boot·spring·spring cloud·django·sqlite·guava
customer081 小时前
【开源免费】基于SpringBoot+Vue.JS周边产品销售网站(JAVA毕业设计)
java·vue.js·spring boot·后端·spring cloud·java-ee·开源
全栈开发圈1 小时前
新书速览|Java网络爬虫精解与实践
java·开发语言·爬虫