Kafka Manager 编译 + 部署运行

准备条件

本地有 sbt 环境
Java 8+

下载

cd /usr/local/src
git clone https://github.com/yahoo/kafka-manager

修改下载源

由于编译时需要用到sbt下载依赖jar包, sbt默认又是用的国外源, 所以下载速度奇慢, 建议将sbt的下载源改成阿里云的私有云。
安装好sbt后, 用户目录下一般都会有 .sbt 这个文件夹, 这个文件夹是隐藏的, ls -a 可以看到。

cd ~/.sbt/
vim repositories

在根目录下新建文件 repositories, 并加入如下内容:

[repositories]
public: http://maven.aliyun.com/nexus/content/groups/public/
typesafe:http://dl.bintray.com/typesafe/ivy-releases/ , [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext], bootOnly
ivy-sbt-plugin:http://dl.bintray.com/sbt/sbt-plugin-releases/, [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext]
sonatype-oss-releases

sonatype-oss-snapshots

- 阅读全文 -

ubuntu 安装 sbt

起因

准备装个 Kafka Manager 来管理 Kafka 集群,发现是用 Scala 开发的,需要用 sbt 去编译代码,那就先把 sbt 环境在本地搞起来!

介绍

sbt 是类似 Maven 的构建工具,全称为 Simple build tool,是 Scala 的标准构建工具。

安装步骤

下载

官网地址:http://www.scala-sbt.org/download.html

cd /usr/local/src
wget https://piccolo.link/sbt-1.2.8.zip

解压

解压到 /usr/local/ 目录

unzip sbt-1.2.8.zip -d /usr/local/

创建运行脚本

cd /usr/local/sbt
vim sbt

加入如下内容,保存退出

#!/bin/bash
BT_OPTS="-Xms512M -Xmx512M -Xss1M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=256M"
java $SBT_OPTS -jar /usr/local/sbt/bin/sbt-launch.jar "$@"

赋权

chmod +x sbt

配置环境变量

vim /etc/profile

在文件底部加入如下内容,保存退出

export SBT_HOME=/usr/local/sbt
export PATH=${SBT_HOME}/bin:$PATH

使生效

source /etc/profile

验证

输入 sbt 进入到交互界面,输入 sbtVersion 查看版本号。

root@ubuntu:/usr/local/sbt# sbt
[warn] No sbt.version set in project/build.properties, base directory: /usr/local/sbt
[info] Set current project to sbt (in build file:/usr/local/sbt/)
[info] sbt server started at local:///root/.sbt/1.0/server/c04b82b170623c189ad8/sock
sbt:sbt> sbtVersion
[info] 1.2.8

总结

安装过程还算简单,网上看到一些用 sbt sbt-version 来查看版本号,我是没成功过,也可能是跟版本有关系。

Linux Shell脚本实现根据进程名杀死进程

起因

  为什么会写这篇文章呢,先说一下背景,因为一个生产环境的机器内存占用一直很高,经过排查发现是一个 consumer 的消费脚本中并发 http client 没有 close,导致定时每小时跑完的脚本一直在那里放着占用内存,时间久了内存占用就上来了,很快我就上了个 patch 修复了这个问题,但是那些跑完的脚本怎么处理呢?还用说嘛,当然要 kill 掉了。

脚本

手动每个去 kill 那真是太慢了,直接找个批量处理的脚本,将以下内容保存为 kill.sh,赋予执行权限,传入脚本的名称即可批量 kill 掉。

./kill.sh procedure_name
#!/bin/sh

if [ $# -lt 1 ]
then
  echo "缺少参数:procedure_name"
  exit 1
fi

PROCESS=`ps -ef|grep $1|grep -v grep|grep -v PPID|awk '{ print $2}'`
for i in $PROCESS
do
  echo "Kill the $1 process [ $i ]"
  kill -9 $i
done

一句话命令

感觉上面的脚本麻烦,可以直接使用下面的一句来实现。

ps -ef | grep procedure_name | grep -v grep | awk '{print $2}' | xargs kill -9

总结

杀掉脚本之后,内存立刻恢复正常占用,顿时感觉清爽了许多。

  1. 保证良好的编码习惯,一些资源用过之后及时 close。
  2. 定期查看生产环境的各种 logs,查找资料并解决报错,技术积累大部分来源于解决生产环境问题。

Linux 创建 swap 交换分区

起因

  日常巡视机器的时候发现一台 4G memory 占用有 3.3G,free 120+M,原来是脚本跑的太多了,导致内存占用上去了,free -h 看了一下这个机器没有 swap 分区,现在记录一下创建过程。

准备工作

查看当前系统Swap信息,如果没有 swap 分区将没有回显。

swapon
swapon -s

也可以使用 free 命令来查看当前系统是否存在 Swap 交换分区

free -h

记得检查磁盘空间是否充足

df -h

步骤

  一般情况下,我们都会使用 dd 命令来预先创建交换分区文件,然后再用 /dev/zero 将该文件的内容全部置零,创建时还将用到 bs 参数来设置要创建的交换空间大小,以及使用 count 来指定要创建的 block 数。
注意:/www/swap 是我指定的路径,这个可随意设定。

1. 开始创建 1GB 大小的交换分区:

dd if=/dev/zero of=/www/swap bs=1M count=1024

2. 初始化为交换分区文件:

mkswap /www/swap

3. 启用交换分区文件:

swapon /www/swap

4. 使系统开机时自启用,在文件 /etc/fstab 中添加一行:

/www/swap    swap    swap    defaults    0 0

到这里已经创建成功了,可以 free -h 看一下了。

IDEA 创建 Spring Boot 笔记

前言

  Java 技术栈也是从 2018 年开始接触不久,今天整理了一下年前的笔记,写一篇博文来记录一下从 0 开始搭建 Spring Boot 的步骤。

准备

  1. 首先安装好 JDK
  2. 安装好 Intellij IDEA

步骤

1. 在 IDEA 左上角点击 File -> New -> Project 。

2. 点击 Spring Initializr,确保 Project SDK 读取到你想要的版本,Next 。

- 阅读全文 -