Mac
V2EX  ›  问与答

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

  •  
  •   Mac · Sep 16, 2014 · 10160 views
    This topic created in 4436 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
    sambohuang
    Sep 16, 2014
    1
    如果是公司系统,访问量不大,我觉得这点差异应该是你的数据库或者查询语句需要优化,内存可能小了点
    cdffh
    cdffh
    Sep 16, 2014
    2
    一般的系统,操作系统这个层面不会成为瓶颈。但是你这个内存太小了。你2g就光跑一个win7都有点难受。如果是小内存还是比较建议linux。 但是如果没人愿意搞定linux,直接换8g内存解决。又不会太贵。
    avichen
    avichen
    Sep 16, 2014
    3
    windows server 也比win7 要跑的快呀。
    Mac
    Mac
    OP
    Sep 16, 2014
    4
    @cdffh
    @sambohuang
    我在任务管理器里看到内存只用了一半
    hjc4869
    hjc4869
    Sep 16, 2014 via iPhone
    5
    用windows server 2012 r2 64位核心版,就是不带GUI的版本,跟linux一样的速度。
    Sunyanzi
    Sunyanzi
    Sep 16, 2014
    6
    用 Windows 7 当生产环境到底是个什么诉求 ..?
    Mac
    Mac
    OP
    Sep 16, 2014
    7
    @Sunyanzi 小公司,至少在IT不在的时候,还有人能操作一下服务器。换成其他版本,尤其是LINUX,那IT不在基本就歇菜了。
    skydiver
    skydiver
    Sep 16, 2014 via Android
    8
    生产环境……Win7……也是醉了
    cdffh
    cdffh
    Sep 16, 2014
    9
    @Sunyanzi 好歹用个xp啊!
    cdffh
    cdffh
    Sep 16, 2014❤️1
    10
    你试一下win server。表示没有win7做生产环境得经验,不过我在本地开发用过win7,也是php+nginx+mysql,字段也是20+,貌似也不慢啊。然后你开一下日志吧 看一下时间花在哪些地方。是数据库查询 还是网络或者是其他的io上面。
    lyragosa
    lyragosa
    Sep 16, 2014❤️1
    11
    首先只要跑php就请走linux环境。实在要用win,请用windows server(至于是正版盗版不在本题讨论范围)

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

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

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

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

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