V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
xianxiaobo
V2EX  ›  程序员

服务器只有 2 核 2G,需要部署一个个人网站,怎么尽可能的减少内存占用?

  •  
  •   xianxiaobo · 2023-02-27 11:16:50 +08:00 · 14105 次点击
    这是一个创建于 614 天前的主题,其中的信息可能已经有所发展或是发生改变。

    比如数据库用 sqlite? 后端语言选什么呢?开发框架选什么呢? 有人了解这一块儿的吗? 最好是有一套方案的那种,谢谢了。

    135 条回复    2023-03-01 08:30:00 +08:00
    1  2  
    hyperzlib
        1
    hyperzlib  
       2023-02-27 11:28:44 +08:00   ❤️ 3
    2H2G 啊,别用 Java 写就行了。数据库一般 MySQL ,或者如果用 NoSQL 可以试试 MongoDB 。语言除 Java 以外都可。
    vicv
        2
    vicv  
       2023-02-27 11:29:04 +08:00 via iPhone   ❤️ 5
    个人网站访问量应该不大吧,主流语言只要不是 Java ,2C2G 已经挺耐操的了。真要关心省内存,那考虑 Go 语言吧。如果是博客,那么静态博客那是极致的省内存。
    Light3
        3
    Light3  
       2023-02-27 11:29:10 +08:00   ❤️ 2
    写个静态的~
    yazinnnn
        4
    yazinnnn  
       2023-02-27 11:30:53 +08:00   ❤️ 2
    个人网站为什么需要后端?
    Twnysta
        5
    Twnysta  
       2023-02-27 11:32:43 +08:00   ❤️ 1
    个人网站?直接 wordpress 改版算了
    aw2350
        6
    aw2350  
       2023-02-27 11:32:43 +08:00   ❤️ 1
    HUGO
    Cat7373
        7
    Cat7373  
       2023-02-27 11:33:49 +08:00   ❤️ 1
    用 Python 或 NodeJS ,再想多放点网站的话,PHP 吧
    zhwithsweet
        8
    zhwithsweet  
       2023-02-27 11:35:39 +08:00   ❤️ 3
    部署在 fly.io cname 过去
    jiayouzl
        9
    jiayouzl  
       2023-02-27 11:36:51 +08:00   ❤️ 1
    2 核 2g 用 php,Python,go,node 等等个人应用毫无问题,抗个日均 2,3 万独立 IP 访问,毫无难度!绝大部分 app,小程序日均都没这么多访客.

    我个人用 php,Python,node 都实战过.当年还只是 1 核 500M 的服务器呢.现在起步都是 2 核 2G 了,更多还是关心下宽带吧!这个才是重头.
    wonderfulcxm
        10
    wonderfulcxm  
       2023-02-27 11:37:02 +08:00 via iPhone   ❤️ 1
    2c2g 其实还可以,我的也是,mysql 都可以装,PHP 那套肯定没问题,甚至装 code server 远程开发。我估计除了 Java 其他都问题不大。
    xianxiaobo
        11
    xianxiaobo  
    OP
       2023-02-27 11:37:21 +08:00
    @yazinnnn 想做个有后台管理系统的个人网站,包括图片上传啊,博客上架下架之类的
    xianxiaobo
        12
    xianxiaobo  
    OP
       2023-02-27 11:38:21 +08:00
    @Twnysta 想自己从零开始做,着重体验一下过程
    xianxiaobo
        13
    xianxiaobo  
    OP
       2023-02-27 11:40:07 +08:00
    其实我更好奇的是,怎么极致的省内存,在有后端服务的情况下
    yhxx
        14
    yhxx  
       2023-02-27 11:48:31 +08:00   ❤️ 2
    如果是博客直接只放一个纯静态页面用 nginx 提供服务
    静态资源用 OSS ,一定要后端的话,试试云服务商的函数计算之类的 serverless 服务
    ihciah
        15
    ihciah  
       2023-02-27 11:49:04 +08:00 via iPhone   ❤️ 2
    @xianxiaobo 写 rust ,相比 gc 类立省 50%+ mem 。
    xianxiaobo
        16
    xianxiaobo  
    OP
       2023-02-27 11:51:06 +08:00
    @yhxx 但是这样感觉是绕开了,服务器就变成一个纯代理转发的东西了,我想的还是不依赖于第三方。
    jacy
        17
    jacy  
       2023-02-27 11:53:23 +08:00   ❤️ 1
    一个个人网站 lnmp 2G 完全够了
    mengdu
        18
    mengdu  
       2023-02-27 11:56:50 +08:00   ❤️ 6
    先搭建再考虑优化吧,你自己都说要体验过程了,没人浏览的网站,你开头优化到极致都是那样.
    Tyuans
        19
    Tyuans  
       2023-02-27 11:57:00 +08:00   ❤️ 1
    都要求这么高了么,我的图床还是 0.8H1G 的...
    westoy
        20
    westoy  
       2023-02-27 11:58:13 +08:00   ❤️ 1
    如果你没有流量, 你没必要省资源
    如果你流量增长很快, 你以后重写这个系统的成本肯定比加配置高

    当年虚拟主机按 MB 卖钱的时代, 你这套配置 IDC 可以放上千个动态网站, 而且当时是个网站就算扔那里不管, 流量就比现在认认真真做来的高........
    wheat0r
        21
    wheat0r  
       2023-02-27 12:00:20 +08:00   ❤️ 1
    不知道后端服务是什么,单纯跑网站的话,caddy+sqlite 实在是用不了多少资源
    boks
        22
    boks  
       2023-02-27 12:07:47 +08:00   ❤️ 1
    php + laravel + mysql 就行,第一次进博客详情页把渲染的页面保存为静态页,nginx 里配置下,有静态页直接返回
    ericls
        23
    ericls  
       2023-02-27 12:10:05 +08:00   ❤️ 2
    2G 内存可以跑 100 个 个人博客
    weijancc
        24
    weijancc  
       2023-02-27 12:12:38 +08:00   ❤️ 1
    我的就是 2g, 日常使用 Java 后端 465m, mysqld: 453m, 前端 nginx: 2.5m, 实际上搓搓有余, 我还额外跑了个占用 300m 的 squid
    zjp
        25
    zjp  
       2023-02-27 12:20:28 +08:00 via Android   ❤️ 1
    个人网站是啥
    博客的话 1G 我搭过 Nginx + PostgreSQL + Java ,只有 JVM 需要限制最大内存,其他的不用担心
    longjiahui
        26
    longjiahui  
       2023-02-27 12:21:49 +08:00   ❤️ 1
    1G 内存,基本没什么访问量,开了一堆重复的 docker 镜像,13 个,主要是 caddy 和数据库和服务器,全靠 swap 撑着。
    admpubcom
        27
    admpubcom  
       2023-02-27 12:23:08 +08:00 via iPhone
    我的个人网站 hifilm.top ,带完整后台,服务器配置是 1h1g ,用 go+mysql8 开发的,感觉够用了,供参考
    makelove
        28
    makelove  
       2023-02-27 12:24:31 +08:00   ❤️ 1
    OP 这是刚买了彩票就想着钱怎么花了,醒醒你的网站不会到 2c2g 都撑不住的一天
    cupssb
        29
    cupssb  
       2023-02-27 12:28:32 +08:00   ❤️ 1
    JAVA SDK 用 GraalVM 跑个 native image ,很省内存。
    zpf124
        30
    zpf124  
       2023-02-27 12:30:23 +08:00   ❤️ 1
    这大小其实一般个人项目完全够了,用 java 都没问题。
    debuggerx
        31
    debuggerx  
       2023-02-27 12:37:54 +08:00   ❤️ 1
    这么高的配置还有啥好优化的。
    1C256MB 跑个个人站都完全够用了
    数据库不用 mysql 用 pg ,语言不 java 换支持 aot 的语言,64MB 内存都可以挑战一下
    UG1u8zhQxhvqXNrk
        32
    UG1u8zhQxhvqXNrk  
       2023-02-27 12:43:03 +08:00   ❤️ 1
    2G 完全够了 sqlite3+python+django 又省事又省资源
    lower
        33
    lower  
       2023-02-27 12:51:04 +08:00   ❤️ 1
    有设置 swap 内存交换 的么?
    win xp 时代几乎是标配,Linux 不知道这玩意效果如何……
    牺牲速度 扩大容量 有搞头么?
    sadfQED2
        34
    sadfQED2  
       2023-02-27 12:51:44 +08:00 via Android   ❤️ 2
    我 1 核 0.5G 使用 docker 部署了 php golang v2ray nginx mysql redis 服务毫无压力。稳定运行 8 年多了
    dafuyang
        35
    dafuyang  
       2023-02-27 12:52:21 +08:00   ❤️ 1
    我的网站前后端分离,前端 vue 后端 python ,没有专门的管理后台页面,配置相关的用数据库或者缓存,用的 1c2g+50g 硬盘服务器,装了 2 套 mysql ,2 套 redis ,docker ,nginx ,jenkins ,2 套 rabbitmq ,配合 OSS 加 CDN ,最高流量一天 2000 多人的时候也没有压力(平时也没啥流量没有专门去压测),内存 CPU 占用一般是构建部署镜像的时候会高一点,其他时候占用 60 左右,给你参考
    opengps
        36
    opengps  
       2023-02-27 12:54:19 +08:00
    减少大列表查询,查询变量尽量缩小范围;
    用批量更新用逐行操作代替批量操作等等;
    我连续用 1 核 2G 服务器多年,稳定性很好
    1KTN90lKW9gVJ9vX
        37
    1KTN90lKW9gVJ9vX  
       2023-02-27 12:56:23 +08:00 via Android
    我博客:www.sl

    配置更低,而且是 wordPress ,一样稳定运行,根本没几个人访问。
    whereFly
        38
    whereFly  
       2023-02-27 12:56:28 +08:00
    不要担心,以前用 1 核 1G 运行过百万 PV
    buyan3303
        39
    buyan3303  
       2023-02-27 13:00:53 +08:00
    减少内存占用的话,zblog,帝国 CMS 之类的,伪静态。或者生成纯静态,然后把内容放服务器上。

    减少页面中的 html 代码+格式化代码+图片用 PS 压缩,再用 tinypng 压缩,视频之类的东西就直接白嫖 B 站等平台。
    hack
        40
    hack  
       2023-02-27 13:03:46 +08:00
    hugo + caddy
    musi
        41
    musi  
       2023-02-27 13:30:59 +08:00
    ?
    我放了三个 node 服务一个 mysql 一个 nginx 都没满你在这担心什么
    Twnysta
        42
    Twnysta  
       2023-02-27 13:42:21 +08:00
    @xianxiaobo learnku 有 php 的 laravel 教程,有论坛有商城,还是不错的。
    qianxaingmoli
        43
    qianxaingmoli  
       2023-02-27 13:46:11 +08:00
    个人博客 typecho+sqlite 1c2g

    total used free shared buff/cache available
    Mem: 1.8G 589M 93M 96M 1.1G 970M
    Swap: 4.0G 0B 4.0G
    daolanfler
        44
    daolanfler  
       2023-02-27 13:50:38 +08:00
    1 核心 1G ,Digital Ocean VPS 路过。博客是静态的,还行,主要没啥访问量。
    nekoneko
        45
    nekoneko  
       2023-02-27 14:01:29 +08:00
    在自己家电脑撘建然后内网穿透
    在自己家搭建要个公网 ip 做 DMZ(或端口映射)
    si
        46
    si  
       2023-02-27 14:04:38 +08:00
    正常做就可以了,不会有什么影响的。
    不用担心,没什么人访问的。
    libook
        47
    libook  
       2023-02-27 14:07:16 +08:00
    需求驱动,不做过度优化,等内存问题成为主要问题的时候再根据网站的具体情况来看怎么优化。
    pinylin
        48
    pinylin  
       2023-02-27 14:13:57 +08:00
    rust + postgresql 非常省
    vicalloy
        49
    vicalloy  
       2023-02-27 14:16:41 +08:00
    如果访问量不大,完全不用担心内存。给你看看我腾讯 2G 的服务器用了多少内存。
    outline-docker-compose_wk-nginx_1 3.086MiB / 1.941GiB
    outline-docker-compose_wk-outline_1[node.js] 216.3MiB / 1.941GiB
    outline-docker-compose_wk-redis_1 6.551MiB / 1.941GiB
    outline-docker-compose_wk-minio_1[golang] 96.13MiB / 1.941GiB
    outline-docker-compose_wk-oidc-server_1[python/django] 75.34MiB / 1.941GiB
    outline-docker-compose_wk-postgres_1 32.22MiB / 1.941GiB
    wordpress_wp_1[apache/php] 190.6MiB / 1.941GiB
    wordpress_wpdb_1[mysql] 213.4MiB / 1.941GiB
    filebrowser_filebrowser_1[golang] 10.85MiB / 1.941GiB
    carrot_carrot-box_1[python/django] 77.67MiB / 1.941GiB
    nginx_nginx_1 7.34MiB / 1.941GiB
    y0bcn
        50
    y0bcn  
       2023-02-27 14:26:24 +08:00
    用 Java 的话
    Spring Boot3+AOT 应该占用也不大
    cloverzrg2
        51
    cloverzrg2  
       2023-02-27 14:35:59 +08:00
    你一个人的话, go+sqlite, 256M 内存足以
    LinuShen
        52
    LinuShen  
       2023-02-27 14:52:13 +08:00
    alpine linux+nginx+php8.2+sqlite+typecho ,极致剩内存还能留点交互式
    chaselen
        53
    chaselen  
       2023-02-27 14:57:48 +08:00
    @nekoneko 2 不太行吧,现在家宽搭建 web 服务不是查的严么
    zoumouse
        54
    zoumouse  
       2023-02-27 15:07:17 +08:00
    说实话,Java 也够用了
    guiyun
        55
    guiyun  
       2023-02-27 15:12:32 +08:00
    java 怕吃内存的话可以用 OpenJ9 JVM 的 JDK,比如 IBM JDK
    内存基本上少一半多

    https://adoptopenjdk.net/releases.html?variant=openjdk11&jvmVariant=openj9

    ![]( https://image.guiyunweb.com/2021/jdk_1635332409182.jpg)
    timnottom
        56
    timnottom  
       2023-02-27 15:14:48 +08:00
    golang
    xiaocaiji111
        57
    xiaocaiji111  
       2023-02-27 15:14:55 +08:00
    我 2 核 4G 跑了 4 个 java 项目没问题,上面还有 docker 啥的。配置一下,限制下最大内存。
    xiaocaiji111
        58
    xiaocaiji111  
       2023-02-27 15:21:07 +08:00
    @xiaocaiji111 推荐使用 halo 这个博客系统
    bugsnail
        59
    bugsnail  
       2023-02-27 15:26:52 +08:00
    这个,跑 wordpress 虽然不能说绰绰有余,但说轻轻松松是没问题的
    looppppp
        60
    looppppp  
       2023-02-27 16:20:16 +08:00
    用 go ,内存占用很小
    yikeshuo
        61
    yikeshuo  
       2023-02-27 16:40:22 +08:00
    搞个 frp 内网穿透 直接用自己的本地作为服务器
    sam384sp4
        62
    sam384sp4  
       2023-02-27 17:05:35 +08:00
    python fastapi
    raptor
        63
    raptor  
       2023-02-27 17:12:59 +08:00   ❤️ 2
    2 核 2G 还不够你用?用 JAVA 写的吧……

    我部署过最低配置的 Wordpress 只用了 128M 内存……
    kqxianren
        64
    kqxianren  
       2023-02-27 17:15:44 +08:00
    2 核 2G 还不够嘛, 那个人网站可以商业化了
    xujinkai
        65
    xujinkai  
       2023-02-27 17:17:24 +08:00 via Android
    极致省内存可以用 C 写,但是没必要
    mosliu
        66
    mosliu  
       2023-02-27 17:24:19 +08:00
    2C2G 怎么这么多。我记得当时 64M 还是 128M 就能跑 WP 了
    ice2016
        67
    ice2016  
       2023-02-27 17:33:48 +08:00
    lnmp
    基本就搞定了,或者 Python
    id80108900
        68
    id80108900  
       2023-02-27 17:44:24 +08:00
    我 512 M 的照样跑
    cccssss
        69
    cccssss  
       2023-02-27 17:47:02 +08:00
    跑了 4 个 java 分别占用是 384+200+200+128
    gnup
        70
    gnup  
       2023-02-27 17:47:03 +08:00
    以前 64M 的內存可以想办法跑 Linux+ nginx+mysql+php ,128M 内存是稳稳的可以跑起来,用百度搜一下还能搜到好多以前 64M 内存 VPS 搭建 WordPress 等的文章。2G 内存太夸张了吧
    ltkun
        71
    ltkun  
       2023-02-27 17:49:22 +08:00 via Android
    装 win10 可能会卡 当然装 xp 肯定不卡 装 Linux 能起飞了
    leeggco
        72
    leeggco  
       2023-02-27 17:51:20 +08:00
    我的 1 核 2G ,跑了 10 个网站都没问题,linux
    Azad01
        73
    Azad01  
       2023-02-27 17:53:20 +08:00
    2h2g 够用了,我部署了三十几个个人网站,内存占用也还可以
    Anivial
        74
    Anivial  
       2023-02-27 17:58:26 +08:00
    后段语言选 go ,框架选 Gin
    或者
    Python + Flask
    oneisall8955
        75
    oneisall8955  
       2023-02-27 18:00:22 +08:00
    @admpubcom #27 大佬,你的站点是类似 maccms 配合模板+采集的视频站吗?最近想搞一个玩玩,可否细聊?
    admpubcom
        76
    admpubcom  
       2023-02-27 18:04:09 +08:00 via iPhone
    @oneisall8955 是的。不过是用 golang 写的
    piku
        77
    piku  
       2023-02-27 18:06:42 +08:00 via Android
    感觉问题方向错了。程序的内存和 CPU 开销取决于代码质量,而不是编程语言。减少变量使用,及时释放内存,正确分配数据类型,都是可以减小内存开销的。至于 web 开发就是在选择框架时不采用庞大繁杂的框架,不引入不需要的库( wheel ?)等等。数据库方面如果要极致精简的话可以只用文本存储,不要数据库引擎,或系统内核支持的
    hellowwjie2021
        78
    hellowwjie2021  
       2023-02-27 18:25:56 +08:00
    推荐 php+mysql, 控制下 php-fpm 进程数 ,然后限制下 mysql cache 占用, 之前 512M 跑了很多年,用的 WordPress
    realpg
        79
    realpg  
       2023-02-27 18:48:33 +08:00
    现在开发的一个项目的服务端 apiserver 单机综合请求 8000QPS ,进程内存占用 1.4GB
    你 2G 还不够用?
    duke807
        80
    duke807  
       2023-02-27 18:58:04 +08:00 via Android
    看我自己写的博客: https://blog.d-l.io/about-zh
    不使用数据库,除了自己网站浏览,github 等 git 在线也可以浏览
    后台使用 cgi 脚本,开销极少,脚本我用 python 写的,也可以用其它语言写
    动态上架下架你可以看我的留言模块,文章本身没有做 web 后台发布,我直接用 git push 发布和修改文章
    Amazingguy
        81
    Amazingguy  
       2023-02-27 19:00:45 +08:00
    个人网站居然还需要服务器???

    奢侈!!!
    oneisall8955
        82
    oneisall8955  
       2023-02-27 19:01:34 +08:00
    @admpubcom #76 注册不了😂,还想体验一波
    oneisall8955
        83
    oneisall8955  
       2023-02-27 19:03:08 +08:00
    @duke807 #80 家里有矿啊,家里泳池
    Rehtt
        84
    Rehtt  
       2023-02-27 19:09:25 +08:00 via Android
    2 核 2G 够用了,宝塔一键安装环境,后端用 php
    fzls
        85
    fzls  
       2023-02-27 19:24:33 +08:00
    以大部分人网站的访问量,基本不用操心这个-。-
    admpubcom
        86
    admpubcom  
       2023-02-27 20:32:35 +08:00 via iPhone
    @oneisall8955 🤦浮层注册功能有 bug ,我修一下
    sibowen
        87
    sibowen  
       2023-02-27 20:36:58 +08:00
    hugo 写,本地直接生成静态 html 。
    静态 html 推到 git 。
    线上装个 nginx ,写个 shell ,需要的时候把 git 代码拉到 nginx 目录完事。
    liudon
        88
    liudon  
       2023-02-27 21:04:29 +08:00
    静态博客,直接部署到 IPFS 😜

    https://liudon.com/posts/deploy-blog-to-ipfs/
    w3cll
        89
    w3cll  
       2023-02-27 21:10:45 +08:00
    我的 1 核,1G ,1M 用 PHP 毫无压力。
    admpubcom
        90
    admpubcom  
       2023-02-27 21:52:08 +08:00 via iPhone
    @oneisall8955 修好啦😄
    iseki
        91
    iseki  
       2023-02-27 21:53:55 +08:00 via Android
    用 Java 也行,别用 spring ,用 Kotlin/ktor 吧
    xiaoun001
        92
    xiaoun001  
       2023-02-27 22:01:59 +08:00 via Android
    挺好的配置了。操作系统用网络版 debian 最小化安装,不要装桌面。系统大概消耗 128MB 内存。然后,跑个 lnmp ,木有任何问题。其他语言我也不懂,就说不出来了。
    Jtyczc
        93
    Jtyczc  
       2023-02-27 22:04:35 +08:00 via Android
    @xiaocaiji111 每个限多少啊?
    seakingii
        94
    seakingii  
       2023-02-27 22:09:36 +08:00
    最省内存,就是纯静态的网站了
    要有动态的后台,建议用 rust 这样无 GC 的语言。
    缓存用磁盘缓存,数据库用 SQLITE 这样的文件数据库,各种操作尽量用流式。接口传递的数据选用更紧凑的数据格式
    但是为了更高的并发和效率,还是得尽量用好内存,而不是尽量的节省内存。
    seakingii
        95
    seakingii  
       2023-02-27 22:10:52 +08:00
    OP 的 2G 内存其实很多了(对个人网站),如果为了学习,可以考虑本地开个 256M 这样的虚拟机玩
    284716337
        96
    284716337  
       2023-02-27 22:15:15 +08:00 via Android
    我之前 1c1g ,lnmp+typecho 挺快的,还跑了一个 frp
    hefish
        97
    hefish  
       2023-02-27 22:15:16 +08:00
    可以写一个 txt 文件,里面放网站的所有内容。
    jeesk
        98
    jeesk  
       2023-02-27 22:21:35 +08:00
    我 500m 的服务器都能跑一些服务。2g 还嫌小
    tuutoo
        99
    tuutoo  
       2023-02-27 22:41:14 +08:00
    我最近才发现 NotionNext 超好用。
    直接用 Notion 写,用 NotionNext 发布到 Vercel ,连服务器都省了,还可以绑定自己域名。笔记即博客。
    alsas
        100
    alsas  
       2023-02-27 22:41:46 +08:00
    后端用 go
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1464 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 17:37 · PVG 01:37 · LAX 10:37 · JFK 13:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.