命令 nc

  1. 发送 HTTP 请求。
curl http://ip:port/
GET /?name=wjj HTTP/1.1
Host: 127.0.0.1:8000
User-Agent: curl/7.61.1
Accept: */*
POST /users_by_json HTTP/1.1
Host: 127.0.0.1:8000
User-Agent: curl/7.61.1
Accept: */*
Content-Type: application/json
Content-Length: 36

{
    "name": "wjj",
    "age": 40
}

基于健康码识别的 FastAPI 同步和异步函数的基准测试

健康码识别服务使用了 FastAPI 进行开发的,本周主要工作是为了对健康码识别的服务进行性能调优。接口函数使用了 async 关键字,但是内部的实现并没有使用 await。由于改写成异步代码需要时间,这里并没有改写代码,只是删除了 async 关键字。部署服务使用了 uvicorn 和 gunicorn+uvicorn 两种方法。

基准测试工具使用的是 ab

  • 4 个进程可以发挥到最佳效果
  • 8 个进程已经到了上限了
  • 在部署这种密集计算的应用下,gunicorn + uvicorn 并没有比 uvicorn 强,但如果您需要管理进程,它们就是最佳组合。
  • 通过基准测试发现,最大的瓶颈不是 GPU,而且 CPU,GPU 一张卡的负载还没有 40 核 CPU 的负载高。

异步(使用了 async 关键字)函数,在压测的过程中基本上不会失败(Failed),同步函数,在压测过程中会经常失败,随着并发数的增加而增加。目前还没有找到原因

HTTP 基准测试工具

可以编写个程序按上面的格式生成二进制的文件数据

我这里生成的数据:postdata

--1234567890^M
Content-Disposition: form-data; name="file"; filename="test.jpg"^M
Content-type: image/jpeg^M
^M
iVBORw0KGgoAAAANSUhEUgAACl4AAAesCAIAAABa4uohAAAACXBIWXMAAAsTAAALEwEAmpwYAAAgAElEQVR4nOzdfXyTZZ73/V/ShIZSSgqVxtpiaBE6SzuUgrNIFYGWBcW9R……..^M
--1234567890--^M
  • Ubuntu
apt install apache2-utils -y
ab -p user.json -T "application/json" http://127.0.0.1:8000/users

Python 自动生成周报

  • strftime 日期转字符串
    • '%y%m%d' => '220320'
    • '%Y%m%d' => '20220320'
  • strptime 字符串转日期
  • datetime.days 获得日期是星期几
  • timedelta(days) days=0(周一)...days=6(周日)

修改姓名

python weekly.py "本周任务" "下周任务" --reporter Warship

Dockerfile 实践

  • DEBIAN_FRONTEND
  • 加速
    • apt 源
    • pypi 源
  • 安装
    • gcc
    • pip
    • Python
    • OpenCV

构建镜像

docker build -t gouchicao/ubuntu:20.04-python3-opencv4 .
  • requirements.txt 优先把 requirements.txt 文件拷贝到镜像中,然后安装依赖库,最后把程序代码拷贝进镜像中,主要是代码变动的频率比库变动的频率高,这样避免了每次都要重新安装依赖的库,加快构建镜像的速度。

我删库了, rm -rf *

今天,我“删库”了......

/data$ ll logs/
rm -rf *

我在根目录查看子目录的信息,确认是想删除的数据,然后顺手执行了 rm -rf * ,杯具产生了......

拼命补救,没成功......

查看目录或文件的 inode id

$ ls -id /
2 /

$ ls -id /usr/
28966913 /usr/

$ ls -id /usr/bin/bash
28967390 /usr/bin/bash

命令tr

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            126G     0  126G   0% /dev
tmpfs            26G  4.0M   26G   1% /run
/dev/sda2       548G   50G  471G  10% /
tmpfs           126G     0  126G   0% /sys/fs/cgroup
/dev/sda1       511M  7.9M  504M   2% /boot/efi
/dev/sdb1       2.0T  4.7G  1.9T   1% /data
$ df -h | tr a-z A-Z

OpenResty 内执行 Lua 脚本

OpenResty 是一款基于 NGINX 和 LuaJIT 的 Web 平台。

查看镜像的标签 $ sudo docker inspect openresty/openresty:centos | jq '.[].Config.Labels' { "maintainer": "Evan Wies <evan@neomantra.net>", "org.label-schema.build-date": "20210915", "org.label-schema.license": "GPLv2", "org.label-schema.name": "CentOS Base Image", "org.label-schema.schema-version": "1.0", "org.label-schema.

GaiaGPU: 在容器云中共享GPU

容器技术由于其轻量级和可伸缩的优势而被广泛使用。GPU也因为其强大的并行计算能力被用于应用程序加速。在云计算环境下,容器可能需要一块或者多块GPU计算卡来满足应程序的资源需求,但另一方面,容器独占GPU计算卡常常会带来资源利用率低的问题。因此,对于云计算资源提供商而言,如何解决在多个容器之间共享GPU计算卡是一个很有吸引力的问题。本文中我们提出了一种称为GaiaGPU的方法,用于在容器间共享GPU存储和GPU的计算资源。GaiaGPU会将物理GPU计算卡分割为多个虚拟GPU并且将虚拟GPU按需分配给容器。同时我们采用了弹性资源分配和动态资源分配的方法来提高资源利用率。实验结果表明GaiaGPU平均仅带来1.015%的性能损耗并且能够高效的为容器分配和隔离GPU资源。

部署指标的服务

kubectl apply -f  gpu-manager-svc.yaml
kubectl apply -f gpu-quota.yaml

打开一个新的终端,获取 GPU 指标数据的统计。 curl http://127.0.0.

安装Go

PATH=$PATH:/usr/local/go/bin

#Go代理配置(解决墙的问题)
export GOPROXY=https://goproxy.cn,direct
export GO111MODULE=on
$ source /etc/profile

使用终端浏览Markdown和HTML

sudo pip install grip
sudo apt install lynx

grip -b README.md
lynx http://localhost:6419/
sudo apt install pandoc
pandoc README.md -t plain | less
sudo apt install lynx
sudo apt install pandoc

pandoc index.html | lynx -stdin
sudo pip install grip

grip -b index.html