开发 Tips(5)

2023年 1月 4日 26.5k 0

主要记录最近遇到的一些开发问题,解决方法。

1. Python 内存分析方法

主要涉及四个工具:

  • memory_profile:分析每一行代码的内存使用量
  • objgraph:跟踪内存中的对象的关系
  • guppy:在运行时跟踪堆的使用情况
  • pyrasite:向进程中注入代码

分为两步:

  • 模拟线上环境,使用 pyrasite 和 guppy 获取堆信息
  • 根据上一步的信息定位到代码中的某一块,再使用 memory_profile 或 objgraph 来进行进一步的分析
  • 2. Docker Machine 基本操作命令

    • 创建 my-vm-name 虚拟机
    1
    
    docker-machine create --driver virtualbox my-vm-name
    
    • 查看全部 docker-machine
    1
    2
    3
    4
    
    docker-machine ls
    NAME         ACTIVE   DRIVER       STATE     URL                         SWARM   DOCKER        ERRORS
    default      *        virtualbox   Running   tcp://192.168.99.101:2376           v18.06.1-ce
    my-vm-name   -        virtualbox   Running   tcp://192.168.99.102:2376           v18.06.1-ce
    
    • 登录到 docker-machine
    1
    2
    
    docker-machine ssh default
    [email protected]:~$
    
    • 获取 docke-machine 的宿主机 IP
    1
    2
    
    docker-machine ip default
    192.168.99.101
    
    • 其他命令
    1
    
    docker-machine  [命令] [主机名]
    
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    
    active  查看活跃的 Docker 主机
    config  输出连接的配置信息
    create  创建一个 Docker 主机
    env  显示连接到某个主机需要的环境变量
    inspect  输出主机更多信息
    kill  停止某个主机
    regenerate-certs  为某个主机重新生成 TLS 认证信息
    restart  重启主机
    rm  删除某台主机
    ssh  SSH 到主机上执行命令
    scp  在主机之间复制文件
    start  启动一个主机
    stop  停止一个主机
    upgrade  更新主机 Docker 版本为最新
    url  获取主机的 URL
    

    3. 在 Docker Machine 安装软件

    在 Windows 或 OS X 上,使用 Docker 需要借助 VirtualBox 基于 Boot2Docker 镜像创建的虚拟机。Boot2Docker 基于 Tiny Linux,提供 tce-load 管理包工具。以安装 Python 为例:

    1
    2
    
    tce-load -wi python
    curl https://bootstrap.pypa.io/get-pip.py | sudo python -
    

    可安装软件包列表 tce-load:http://distro.ibiblio.org/tinycorelinux/tcz_2x.htmltce-load 命令的文档:http://wiki.tinycorelinux.net/wiki:tce-load

    4. Docker 命令

    • 启动容器,映射端口格式: hostPort:containerPort
    1
    2
    3
    4
    5
    
    docker container run \
      -d \
      -p 127.0.0.1:8080:80 \
      --name nginxname \
      nginx
    
    • 以 shell 的形式登录到容器
    1
    
    docker exec -it containerID bash
    
    • 查看容器的日志
    1
    
    docker logs -f containerID
    

    5. Python 多重继承

    Python 多重继承调用方法时,采用深度优先搜索算法。按顺序从一个父类一直深度搜索,然后再搜索第二个父类,一直到找到方法为止。

    • 旧类

    旧类查找顺序, C(A, B) => C -> A -> B

    • 新类

    新类有一个问题就是,任何多重继承的子类都有一个共同的祖类 Object,都是菱形继承。新类的方法是按照 Class.__mro__中储存的类的顺序查找的。新类查找顺序, C(A, B) => C -> A -> B -> Object

    6. 性能测试 - Locust

    Locust 是开源、使用 Python 开发的性能测试工具。它基于事件、支持分布式,并且提供 Web UI 进行测试执行和结果展示。由于使用的是 gevent 的协程并发机制,在并发量上 Locust 显著优于其他同类工具。安装:

    1
    
    pip install locustio
    

    编写一个测试用例:test.py

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    
    from locust import HttpLocust, TaskSet, task
    
    
    class TestBaiDu(TaskSet):
    
        @task
        def baidu_page(self):
            self.client.get('/')
    
    
    class WebsiteUser(HttpLocust):
        task_set = TestBaiDu
        min_wait = 3000
        max_wait = 5000
    

    执行测试:

    1
    
    locust -f test.py --host=https://www.baidu.com
    

    Web UI 访问,打开链接: http://localhost:8089/

    7. 如何将 MongoDB 注册为 Windows 服务

    下载安装之后,将目录 C:\Program Files\MongoDB\Server\4.0\bin\ 加入 PATH。以管理员权限执行命令:

    1
    
    mongod.exe --config "C:\Program Files\MongoDB\Server\4.0\bin\mongod.cfg" --install  -serviceName "MongoDB" 
    

    启动服务 MongoDB:

    1
    2
    3
    
    C:\Windows\system32>net start mongodb
    mongodb 服务正在启动 ..
    mongodb 服务已经启动成功。
    

    8. CentOS 编译安装 Python 3.7

    安装依赖:

    1
    
    yum install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils libffi-devel
    

    下载源码包:

    1
    2
    
    cd /usr/src
    wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz
    

    开始安装:

    1
    2
    3
    4
    
    tar xzf Python-3.7.0.tgz
    cd Python-3.7.0
    ./configure --enable-optimizations
    make altinstall
    

    查看版本信息:

    1
    
    python3.7 -V
    

    安装 pip

    wget https://bootstrap.pypa.io/get-pip.py -O - | python3.7 
    pip3 -V
    

    9. CentOS 7 升级安装 Git2

  • 移除旧版本:
  • 1
    
    yum remove git
    
  • 安裝 epel-release repository :
  • 1
    
    yum install epel-release
    
  • 安裝 IUS repository:
  • 1
    
    yum install https://centos7.iuscommunity.org/ius-release.rpm 
    
  • 安裝 git2u:
  • 1
    
    yum install git2u
    

    相关文章

    KubeSphere 部署向量数据库 Milvus 实战指南
    探索 Kubernetes 持久化存储之 Longhorn 初窥门径
    征服 Docker 镜像访问限制!KubeSphere v3.4.1 成功部署全攻略
    那些年在 Terraform 上吃到的糖和踩过的坑
    无需 Kubernetes 测试 Kubernetes 网络实现
    Kubernetes v1.31 中的移除和主要变更

    发布评论