2026年1月29日星期四

小型网站的ubuntu服务器如何提升连接数

 当服务器有多个api应用,或者网站的时候,会出现网页打不开。但是cpu、内存等都很空闲。这种情况,有可能是网站的文件数设置不正确。

查询服务器支持的TCP连接数:

ulimit -n

默认是1024

需要增加方法:

编辑/etc/security/limits.conf

* soft nofile 65535

* hard nofile 65535

* soft nproc  4096

* hard nproc  4096

前面的*,表示任何的用户的连接数都设置这个值
作用
soft进程默认可用上限
hardsoft 的最大允许值

确认这个文件存在:
cat /etc/pam.d/common-session | grep pam_limits
如果没有,补一行:
session required pam_limits.so


查询 listen 队列
sysctl net.core.somaxconn

增大 listen 队列 somaxconn:
echo "net.core.somaxconn = 4096" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

查询TCP 半连接队列
sysctl net.ipv4.tcp_max_syn_backlog
echo "net.ipv4.tcp_max_syn_backlog = 4096" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

TIME_WAIT / 短连接复用
echo "net.ipv4.tcp_tw_reuse = 1" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
如果是2,表示允许 TCP 连接在 TIME_WAIT 状态下,被“更激进地”复用(包括对外主动连接)
比= 1更宽松。

验证 TCP 是否够用
# 查看监听状态
ss -ltn
# 查看 TIME_WAIT 状态
ss -ant | grep TIME-WAIT | wc -l
# 查看当前 fd 限制
root@WIN-V50OVF8TIBU:~# ulimit -Sn
1024
root@WIN-V50OVF8TIBU:~# ulimit -Hn
1048576

ulimit -Sn是当前的bash的文件数限制,与业务无关,ulimit -n 也是。不用管

# 测试 backlog 队列
sudo ss -lntp | grep 5007

查询systemctl的配置情况:
systemctl show --property=DefaultLimitNOFILE --property=DefaultLimitNPROC
systemd 全局默认设置:
编辑文件/etc/systemd/system.conf
设置(或取消注释):
DefaultLimitNOFILE=65535
DefaultLimitNPROC=4096

保存后,重启systemctl
systemctl daemon-reexec
 再重启所有业务

一次性查看所有python业务是否正常了:
for pid in $(pidof python); do
  echo "=== PID $pid ==="
  cat /proc/$pid/limits | grep -E "Max open files|Max processes"
done

查询python进程的状态
ps -o pid,stat,%cpu,cmd -C python
  • STAT 字段:

    • R → 正在运行(CPU 占用高)

    • S → 休眠,等待事件(正常)

    • D → uninterruptible sleep(等待 I/O,被卡)

  • %CPU 字段:

    • 高 CPU 长时间持续 → worker 在卡死运算

    • 0–1% → worker 在等待网络/文件(可能是慢 I/O,不是真卡死)





  • 2025年9月6日星期六

    安装 PaddleOCR的方法

     

    安装飞桨版本:https://www.paddlepaddle.org.cn/install/quick?docurl=/documentation/docs/zh/develop/install/pip/windows-pip.html

    命令:

     python -m pip install paddlepaddle-gpu==3.1.1 -i https://www.paddlepaddle.org.cn/packages/stable/cu129/

    pip install paddlex[ocr]



    远程方案:(这个不好用,需要python10)

    PaddlePaddle 提供了 Paddle Serving,可以把模型打包成远程服务。
    步骤大致是:

    1. 导出 PaddleOCR 的模型(PP-Structure)。

    2. 用 Paddle Serving 部署:

    pip install paddle-serving-client paddle-serving-app paddle-serving-server-gpu
    1. 启动服务端:

    python -m paddle_serving_server.serve --model table_rec_model --port 9393
    1. 客户端调用:

    from paddle_serving_client import Client client = Client() client.load_client_config("table_rec_model/serving_client_conf.prototxt") client.connect(["127.0.0.1:9393"]) result = client.predict(feed={"image": img_bytes})

    2025年9月4日星期四

    vscode在虚拟环境下,断点失效问题解决

     VSCode在使用虚拟环境调试时断点失效,通常是因为launch.json配置文件中的`"justMyCode"设置为true`,导致调试器仅执行用户自己的代码而跳过第三方库的调用。解决方法是找到项目中的launch.json文件,将其中的`"justMyCode": true修改为"justMyCode": false`,并重新启动调试即可。

    如果原来没有,则添加:
    "justMyCode": false 

    2025年6月6日星期五

    pip安装,当出现证书错误处理

     出现这样的错误:

    SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1000)'))) - skipping

    通过忽略证书来处理:

    --trusted-host download.pytorch.org

    2025年6月1日星期日

    通过注入js的方式,获取网页中鼠标的位置

     


    await page.evaluate("""

    () => {

    window.lastMousePosition = { x: 0, y: 0 };

    document.addEventListener('mousemove', (event) => {

    window.lastMousePosition = { x: event.clientX, y: event.clientY };

    console.log(`Mouse moved to: (${event.clientX}, ${event.clientY})`);

    });

    }

    """)


    循环获取鼠标位置

    while True:

    mouse_position = await page.evaluate("window.lastMousePosition")

    print(f"Mouse position: {mouse_position}")

    await asyncio.sleep(2)

    playwright将网页截图的方式

     from playwright.async_api import async_playwright

    import os

    import pytesseract
    from PIL import Image
    import asyncio


    proxy = 'http://abc.com.cn:80'

    async def download():
        async with async_playwright() as p:
            cookie = os.path.join(cookies_folder, "cookie.json")
            browser = await p.chromium.launch(
                headless=False,
                channel="chrome",
                proxy={"server": proxy}  # 设置代理?
            )
            context = await browser.new_context()
            page = await context.new_page()
            await page.goto("https://ddd.com/", timeout=180000)
            await page.wait_for_load_state("networkidle")
            # screenshot_path = 'fullpage.png'
            # await page.screenshot(path=screenshot_path, full_page=True)
            shadow_host = await page.query_selector('div#transcend-consent-manager')
            await shadow_host.screenshot(path='shadow_host.png')


            image = Image.open('shadow_host.png')
            data = pytesseract.image_to_data(image, lang='chi_sim+eng', output_type=pytesseract.Output.DICT)

    2025年5月17日星期六

    linux下的ollama的代理设置

    需要在/etc/systemd/system/ollama.service的内容修改如下:

    [Unit]

    Description=Ollama Service

    After=network-online.target

    [Service]

    ExecStart=/usr/local/bin/ollama serve

    User=ollama

    Group=ollama

    Restart=always

    RestartSec=3

    Environment="PATH=/home/abc/.local/bin"

    Environment="PATH=$PATH"

    Environment="CUDA_VISIBLE_DEVICES=0,1,2,3"

    Environment="OLLAMA_SCHED_SPREAD=1"

    Environment="OLLAMA_KEEP_ALIVE=-1"

    Environment="OLLAMA_HOST=0.0.0.0"

    Environment="OLLAMA_NUM_PARALLEL=10"

    Environment="OLLAMA_ORIGINS=*"

    Environment="https_proxy=http://abc.com:80"

    Environment="http_proxy=http://abc.com:80"

    [Install]

    WantedBy=default.target


    小型网站的ubuntu服务器如何提升连接数

     当服务器有多个api应用,或者网站的时候,会出现网页打不开。但是cpu、内存等都很空闲。这种情况,有可能是网站的文件数设置不正确。 查询服务器支持的TCP连接数: ulimit -n 默认是1024 需要增加方法: 编辑/etc/security/limits.conf * s...