老版本Java8 NIO Socket Channel读写HeapByteBuffer导致的直接内存泄漏 Dec 1, 2023

前言

Hbase会为每一个region server创建一个IPC client线程来做读写操作,并且该线程空闲两分钟就会被关闭。并且Hbase使用Java NIO的Socket ChannelHeapByteBuffer来做读写操作。由于JDK内部机制的问题,会导致直接内存泄漏,下面介绍所谓的内部机制来剖析根因。

...
Grafana表格Pannel配置 Nov 18, 2023

忘记了怎么在Grafana中配置表格,今天来记录下。

Alt text

...
ssh配置 Nov 16, 2023

SSH隧道的类型

  • 本地端口转发(Local Port Forwarding):允许你将本地端口上的数据转发到远程服务器。
  • 远程端口转发(Remote Port Forwarding):允许你将远程服务器上的端口转发到本地计算机。
  • 动态端口转发(Dynamic Port Forwarding):创建一个本地的SOCKS代理服务器,可以用于多种目的,如安全浏览。

本地端口转发:

ssh -L [本地端口]:[目标服务器地址]:[目标端口] root@xxxxx

也可以将本地端口转发写到 ~/.ssh/config 文件中,这样就可以直接在 ssh [SSH服务器别名] 时建立端口转发。

...
Springboot配置多个Mybatis的sqlSessionFactory Sep 10, 2023

本文首先介绍Springboot的单数据源配置方式,并介绍其中的Springboot自动装配细节;其次介绍如何配置多数据源。

...
MacOS睡眠和唤醒历史 Aug 13, 2023

查看用户唤醒历史

pmset -g log|grep -v "DarkWake"|grep -E  "Wake from"

查看所有睡眠和唤醒历史

内容会有点多,而且包含DarkWake

pmset -g log|grep -E  "Entering Sleep state|Wake from"

什么是DarkWake

在 macOS 中,“DarkWake” 和 “Wake” 代表了两种不同类型的唤醒状态:

...
谷歌日本搜索结果显示日文的解决方案 Aug 12, 2023

说到日本的服务器,最早用过一段时间的沪日iplc,现在在用DMIT的PVM.TYO.Pro.Shinagawa,他们在延迟速率方面的表现都很好。有一点比较难受的是日本的google搜索结果总是有日文内容,这里说下解决方案。

谷歌提供了“搜索设置”的功能,允许用户调整“搜索结果语言过滤器”,这个设置将会设置到cookie中,具体来说是NID这个cookie,过期时间是6个月。如果在6个月中有登出再登陆,这个cookie也会丢失,需要重新设置。

...
K8S持久化卷、动态置备、StorageClass Jul 31, 2023

在之前对K8S的使用中,已经用到了Volumes来给pod挂载文件,具体来说用到了HostPath、emptyDir、ConfigMap这几种类型的Volumes。最近在部署grafana时,遇到PersistentVolumeClaim的API类型,研究了一下,发现涉及的东西挺多的,有

...
使用node-exporter + prometheus + grafana 监控k8s集群 Jul 30, 2023

最近在K8S集群中部署了node-exporter + prometheus + grafana,具体过程可以参考我的Github项目kubernetes-prometheus-grafana。这个博客用来记录下过程中的一些知识点,主要有这些:

主题 详述
K8S的RBAC 全称是基于角色的访问控制,K8S权限机制的基础
在Pod中访问ApiServer Prometheus是运行在k8s集群中的一个pod,访问k8s的apiserver时需要一些鉴权机制
Prometheus Service Discovery Prometheus是pull模型,需要自动地发现k8s集群中有哪些endpoing、node、service等,并watch其变更
Prometheus relabel_configs 在prometheus的抓取job中过滤、转换target的label
...
使用K8S DaemonSet部署rust_http_proxy Jul 23, 2023

整体说明

  1. tls的证书没有使用Secret,感觉没啥必要。
  2. 使用HostPort来暴露端口,并将coredns的deployment移动到外网的vps上,已避免ClusterFirst的dnsPolicy下的国内dns污染问题
  3. 使用hostNetwork使用主机网络栈,意义在于暴露端口+使用host的DNS(无污染问题)
  4. 使用envFrom comfigMap加载环境变量,这要求configMap中所有字段都是String类型,443、true、false要用双引号包裹。
  5. 使用hostPath挂载nginx的目录,展示web网页。

Dockerfile

FROM docker.io/redhat/ubi9-micro:9.2-9
# 设置时区为上海,ubi9-micro内置了tzdata 
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo "Asia/Shanghai" > /etc/timezone
COPY target/x86_64-unknown-linux-musl/release/rust_http_proxy /
CMD ["/rust_http_proxy"]

用的RHEL家的ubi9-micro基础镜像,它和alpine差不多大小,用的glibc,没有musl-libc的一些兼容性问题,并且设置时区更加简单,而且我对RHEL家的东西很有好感,所以就用了。一些相关的介绍:

...
在K8S集群中创建clash代理服务 Jul 23, 2023

学习下ConfigMap、Deployment、Service的用法。

...