Mac
V2EX  ›  问与答

PHP+MYSQL+Nginx 在 WIN7 和 LINUX 环境下执行效率差多少?

  •  
  •   Mac · Sep 16, 2014 · 9804 views
    This topic created in 4290 days ago, the information mentioned may be changed or developed.
    公司的生产环境用的是WIN7,总体用下来速度越来越慢,数据不是很多,但字段很多。20个字段,6000多条记录,现在分页首页加载成网页表格,需要2.2秒。

    请问有没有必要换成linux环境?服务器CPU是E6700,内存2G。是升硬件还是换系统?
    Supplement 1  ·  Sep 16, 2014
    @cdffh
    @lyragosa

    MYSQL 语句上,外网IP访问
    /* Affected rows: 0 已找到记录: 6,399 警告: 0 持续时间 1 query: 0.032 sec. (+ 0.327 sec. network) */

    局域网IP访问
    /* Affected rows: 0 已找到记录: 6,399 警告: 0 持续时间 1 query: 0.031 sec. (+ 0.156 sec. network) */

    应该不是MYSQL效率的问题,PHP输出方面,由于用到了一个jquery ui库,是用tr td之类的表格标签来输出的,会不会是因为这个原因,我现在分页每页30条记录,20个字段,就是要生成约600个td 标签,还不算个元素的id name和style 。PHP输出的瓶颈在哪?I/O还是内存还是CPU?
    Supplement 2  ·  Sep 16, 2014
    把PHP版本升到了5.4,提速40%,方向看来是对的。
    37 replies    2014-09-17 01:53:12 +08:00
    sambohuang
        1
    sambohuang  
       Sep 16, 2014
    如果是公司系统,访问量不大,我觉得这点差异应该是你的数据库或者查询语句需要优化,内存可能小了点
    cdffh
        2
    cdffh  
       Sep 16, 2014
    一般的系统,操作系统这个层面不会成为瓶颈。但是你这个内存太小了。你2g就光跑一个win7都有点难受。如果是小内存还是比较建议linux。 但是如果没人愿意搞定linux,直接换8g内存解决。又不会太贵。
    avichen
        3
    avichen  
       Sep 16, 2014
    windows server 也比win7 要跑的快呀。
    Mac
        4
    Mac  
    OP
       Sep 16, 2014
    @cdffh
    @sambohuang
    我在任务管理器里看到内存只用了一半
    hjc4869
        5
    hjc4869  
       Sep 16, 2014 via iPhone
    用windows server 2012 r2 64位核心版,就是不带GUI的版本,跟linux一样的速度。
    Sunyanzi
        6
    Sunyanzi  
       Sep 16, 2014
    用 Windows 7 当生产环境到底是个什么诉求 ..?
    Mac
        7
    Mac  
    OP
       Sep 16, 2014
    @Sunyanzi 小公司,至少在IT不在的时候,还有人能操作一下服务器。换成其他版本,尤其是LINUX,那IT不在基本就歇菜了。
    skydiver
        8
    skydiver  
       Sep 16, 2014 via Android
    生产环境……Win7……也是醉了
    cdffh
        9
    cdffh  
       Sep 16, 2014
    @Sunyanzi 好歹用个xp啊!
    cdffh
        10
    cdffh  
       Sep 16, 2014   ❤️ 1
    你试一下win server。表示没有win7做生产环境得经验,不过我在本地开发用过win7,也是php+nginx+mysql,字段也是20+,貌似也不慢啊。然后你开一下日志吧 看一下时间花在哪些地方。是数据库查询 还是网络或者是其他的io上面。
    lyragosa
        11
    lyragosa  
       Sep 16, 2014   ❤️ 1
    首先只要跑php就请走linux环境。实在要用win,请用windows server(至于是正版盗版不在本题讨论范围)

    另外就是在操作系统成为瓶颈之前,IO肯定会早早的成为瓶颈,之所以IO成为瓶颈就是因为SQL语句太复杂以及访问人数太多。
    我本地有一个网络环境 大约10万条记录,100多个字段都没有出现你这么慢(win8.1+apache+mysql),nginx只会更快。

    实在打死也不想换linux的话:
    - 尽可能优化程序,实在懒得改,就加memcache/redis
    - 换windows server
    - 换个SSD
    mornlight
        12
    mornlight  
       Sep 16, 2014   ❤️ 1
    才几千条件记录....
    楼主你先把瓶颈确认一下,这个不像是操作系统载体的问题
    harrychuh
        13
    harrychuh  
       Sep 16, 2014 via Android   ❤️ 1
    6000行记录,20字段,2.2秒!
    这绝对不是硬件瓶颈,不是语言弱势,PHP win版微软介入花大力气优化过,大部分情况下不输在Linux下。
    相信我,MySQL的iops,PHP的菊花绝对不是6000行,20字段可以爆的,所以,问题极有可能出在你程序的逻辑,SQL语句上,优化这两个才是正道。
    harrychuh
        14
    harrychuh  
       Sep 16, 2014 via Android   ❤️ 1
    另外,在win下面,你应该用Apache+PHP32位+MySQL作为首选,次之用IIS+PHP+MySQL,最后才是nginx.
    wy315700
        15
    wy315700  
       Sep 16, 2014   ❤️ 1
    首先看看有没有人拿那台服务器干别的事情吧,比如 下片
    wwek
        16
    wwek  
       Sep 16, 2014   ❤️ 1
    楼上有人瞎扯.
    win下最好的webserver是iis啊,亲!
    2008 2012 ii+fast cgi php 性能不低.
    楼主你这个情况,和系统有毛的关系, win下也不至于跑到2秒多
    看你sql语句 php程序逻辑 mysql索引的问题吧. 瓶颈和操作系统无关`
    mind3x
        17
    mind3x  
       Sep 16, 2014   ❤️ 1
    @harrychuh 说的是正解……
    loading
        18
    loading  
       Sep 16, 2014   ❤️ 2
    @Sunyanzi
    @cdffh

    你们都没玩过win7的扫雷么?比xp那个炫多了,运维玩起来都醉了!!!
    whywhywhy
        19
    whywhywhy  
       Sep 16, 2014
    @loading 是很好 但是win8没有了这是闹哪样!
    hello570111
        20
    hello570111  
       Sep 16, 2014
    如果用户数不多的话,用个人电脑装win7也不应该是这个速度呀,何况只有6000多条数据,甚至都可以不用建索引,先从sql语句找找原因吧。2G虽然不多,但是也应该够用了的。
    akira
        21
    akira  
       Sep 16, 2014
    6000条数据,除非你里面一堆超长字段,不然根本不可能这样的。

    最大的可能是sql各种乱用了,分析下瓶颈sql然后做优化吧
    xiaou
        22
    xiaou  
       Sep 16, 2014   ❤️ 2
    跟楼主说的差不多,正在犹豫使用excel还是php+mysql。。。
    mornlight
        23
    mornlight  
       Sep 16, 2014
    @xiaou 噗,真是够了。
    lentrody
        24
    lentrody  
       Sep 16, 2014   ❤️ 1
    loading
        25
    loading  
       Sep 16, 2014
    @xiaou 我用asp+access快得很!
    lazyphp
        26
    lazyphp  
       Sep 16, 2014
    应该是sql语句问题。估计该用的索引没用上。
    alex321
        27
    alex321  
       Sep 16, 2014
    2003 现在 php+mysql 小项目 6w 数据分页 0.00xs ///////
    taobeier
        28
    taobeier  
       Sep 16, 2014
    看这情况也是醉了~ . 2G内存跑server都比win 7 快啊!
    kisshere
        29
    kisshere  
       Sep 16, 2014
    采用cursor分页的方式吧
    sarices
        30
    sarices  
       Sep 16, 2014
    每一步统计一下时间吧,可以看到耗时在那里,这是最简单的调试方式了,只要在页面输出就可以了
    liulinsoar
        31
    liulinsoar  
       Sep 16, 2014
    用win7和linux比,起码用个server版好不
    lygmqkl
        32
    lygmqkl  
       Sep 16, 2014
    查程序逻辑 mysql语句吧
    typcn
        33
    typcn  
       Sep 16, 2014
    我32位和64位的PHP和mysql 性能差太多 你看一下是不是用的32的
    vimutt
        34
    vimutt  
       Sep 16, 2014
    说实在的看到这贴 我不由得羡慕起码农职业来 真的是术业有专攻 分析起来头头是道啊 看的我也醉了^0^
    cdffh
        35
    cdffh  
       Sep 16, 2014
    优化这种东西是很磨人的:
    1,mysql开慢查询日志。1秒以上都记录下来。
    2,chrome 开发者工具看一下时间主要消耗在那些地方。有缓存和没有缓存得时候都看一下,有时候慢不一定是后端慢,可能是前端需要加载的东西太多。
    3,php里面加入时间记录的代码,记录php的执行时间。

    先把问题切分:看一下到底是那一块慢 是前端得东西太多,还是后端请求慢。
    如果是后端 在定位具体问题 是mysql慢 还是说php慢 因为你是本机mysql 所以php和mysql的连接应该不会慢。
    你既然决定要优化了,那就先定位问题,一点一点来吧。 你现在给的信息太少了。
    vibbow
        36
    vibbow  
       Sep 17, 2014
    根据我个人的测试,Windows下能快一点。。。。。。
    GPU
        37
    GPU  
       Sep 17, 2014 via iPhone
    关闭虚拟内存你就会知道你是多么缺内存了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3615 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 91ms · UTC 04:53 · PVG 12:53 · LAX 21:53 · JFK 00:53
    ♥ Do have faith in what you're doing.