符号链接 - 性能如何?

时间:2012-09-26 12:10:34

标签: linux bash unix

出于部署原因,我使用符号链接会稍微容易一些,但这些将适用于我的所有网站核心文件和配置,每天可以访问数十万次。

我是否更明智地将文档移动到服务器上的正确位置(稍微更有问题的部署)而不是使用符号链接来解决所有问题(性能略有下降?)

2 个答案:

答案 0 :(得分:19)

我创建了一个文件testfile.txt,其中包含1000行blablabla,并为其创建了一个本地符号链接(testfile.link.txt):

$ ls -n
total 12
lrwxrwxrwx 1 1000 1000    12 2012-09-26 14:09 testfile.link.txt -> testfile.txt
-rw-r--r-- 1 1000 1000 10000 2012-09-26 14:08 testfile.txt

-n开关仅用于隐藏我的超级机密用户名。:))

然后对这两个文件执行10轮cat/dev/null次1000次。 (结果以秒为单位。)

直接访问文件:

$ for j in `seq 1 10`; do ( time -p ( for i in `seq 1 1000`; do cat testfile.txt >/dev/null; done ) ) 2>&1 | grep 'real'; done
real 2.32
real 2.33
real 2.33
real 2.33
real 2.33
real 2.32
real 2.32
real 2.33
real 2.32
real 2.33

通过符号链接访问:

$ for j in `seq 1 10`; do ( time -p ( for i in `seq 1 1000`; do cat testfile.link.txt >/dev/null; done ) ) 2>&1 | grep 'real'; done
real 2.30
real 2.31
real 2.36
real 2.32
real 2.32
real 2.31
real 2.31
real 2.31
real 2.32
real 2.32

测量(相当旧的安装)Ubuntu:

$ uname -srvm
Linux 2.6.32-43-generic #97-Ubuntu SMP Wed Sep 5 16:43:09 UTC 2012 i686

当然这是一个愚蠢的例子,但基于此,我不希望在使用符号链接时性能下降太多。

我个人认为,使用符号链接更实用:

  • 正如您所说,您的部署过程会更简单。
  • 如果在目录名称中包含某种时间戳或版本号(例如my_web_files.v1my_web_files.v2),您还可以轻松使用版本控制和回滚,并使用“官方”名称符号链接(例如my_web_files)指向“实时”版本。如果要更改版本,只需重新链接到另一个版本化目录。

答案 1 :(得分:2)

您是否测量此性能降级?我怀疑与通过网络获取页面所花费的时间相比,它几乎可以忽略不计。