进学阁

业精于勤荒于嬉,行成于思毁于随

0%

1
2
3
4
5
6
7
8
9
10
11
12
13
FROM openjdk:8-jdk-alpine
MAINTAINER koalas
COPY ./target/*.jar /app.jar

RUN echo 'Asia/Shanghai' >/etc/timezone
# 使用阿里云镜像
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
#增加字体,解决验证码没有字体报空指针问题
RUN set -xe \
&& apk --no-cache add ttf-dejavu fontconfig

ENTRYPOINT java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar $SPRING_CONFIG
EXPOSE 5056
阅读全文 »

基本概念

默认情况下,Compose会为我们的应用创建一个网络,服务的每个容器都会加入该网络中。这样,容器就可被该网络中的其他容器访问,不仅如此,该容器还能以服务名称作为hostname被其他容器访问。

默认情况下,应用程序的网络名称基于Compose的工程名称,而项目名称基于docker-compose.yml所在目录的名称。如需修改工程名称,可使用–project-name标识或COMPOSE_PORJECT_NAME环境变量。

举个例子,假如一个应用程序在名为myapp的目录中,并且docker-compose.yml如下所示:

1
2
3
4
5
6
7
8
version: '2'
services:
web:
build: .
ports:
- "8000:8000"
db:
image: postgres
阅读全文 »

我们可以使用Dockfile构建一个镜像,然后直接在docker中运行。Dockerfile文件为一个文本文件,里面包含构建镜像所需的所有的命令,首先我们来认识一下Dockerfile文件中几个重要的指令。

阅读全文 »

镜像相关

  • 搜索镜像docker search
    docker search nginx Docker就会在Docker Hub中搜索含有“nginx”这个关键词的镜像仓库
  • 下载镜像docker pull
    阅读全文 »

Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 。uname -r

阅读全文 »

上下文切换会消耗CPU的时间,并导致进程真正运行的时间缩短,从而成为系统性能下降的一个因素。过多的上下文切换可能会使得CPU花费过多的时间用于保存和恢复寄存器、内核栈以及虚拟内存等数据,从而影响系统的响应速度和吞吐量。

vmstat是一个非常有用的系统性能分析工具,它可以提供关于系统内存、CPU活动、分页和上下文切换等信息。

在使用vmstat查看上下文切换情况时,可以显示以下统计信息:

Pasted image 20230724142209

阅读全文 »

通过使用jstat工具的-gc选项,我们可以观察GC的分代变化情况,以便确定GC是否过于频繁。具体来说,我们可以使用以下命令来观察进程的GC情况:

1
jstat -gc <pid> 1000

在上述命令中,<font style="color:rgb(10, 191, 91);background-color:rgb(243, 245, 249);"><pid></font>是目标Java进程的PID,而<font style="color:rgb(10, 191, 91);background-color:rgb(243, 245, 249);">1000</font>表示采样间隔(以毫秒为单位)。通过这个命令,我们可以获取关于Survivor区、Eden区、老年代(Old Generation)、元数据区(Metaspace)的容量和使用量信息,以及关于Young GC和Full GC的耗时和次数以及总耗时信息。

阅读全文 »

第一步,使用 top 找到占用 CPU 最高的 Java 进程

1. 监控cpu运行状,显示进程运行信息列表

<font style="color:rgb(47, 48, 52);background-color:rgb(240, 240, 240);">top -c</font>

2. 按CPU使用率排序,键入大写的P

P

阅读全文 »

1 GC 分类(概念)

概念分类

针对 HotSpot VM 的实现,它里面的 GC 按照回收区域又分为两大种类型:一种是部分收集(Partial GC),一种是整堆收集(Full GC)

  • 部分收集(Partial GC):不是完整收集整个 Java 堆的垃圾收集。其中又分为:
    • 新生代收集(Minor GC / Young GC):只是新生代(Eden / S0, S1)的垃圾收集
    • 老年代收集(Major GC / Old GC):只是老年代的垃圾收集。目前,只有 CMS GC 会有单独收集老年代的行为。注意,很多时候 Major GC 会和 Full GC 混淆使用,需要具体分辨是老年代回收还是整堆回收。
  • 混合收集(Mixed GC):收集整个新生代以及部分老年代的垃圾收集。目前,只有 G1 GC 会有这种行为
  • 整堆收集(Full GC):收集整个 java 堆和方法区的垃圾收集。
    阅读全文 »