标签: httpd

在 512mb VPS 上在 Varnish 后面配置 HTTPD

我在具有 512mb RAM 的专用 VPS 上为客户托管一个网站。在过去的 2 周内,由于 0% 的空闲内存(或空闲交换),它已经两次停机。该站点非常依赖数据库,因为它运行具有 60 多个模块的 Drupal。平均而言(根据网站所有者的说法),每月大约有 6,000 名访问者(约 200 人/天)。不过,它可能会增长得相当快——它刚刚推出不到一年。

所以我坐下来终于掌握了对 Apache 的理解。我以前手动配置过 httpd.conf,但还没有完全理解所有的复杂性。

我了解到我应该通过 MaxClients 以 Mb 为单位计算我的平均 Apache 进程大小,并且这个数字不应该超过系统可用的内存。根据 Top 的说法,每个进程大小都略低于 7%(这大约是 1.4Mb,对吧?)。512/1.5 = 341...这对我来说似乎非常大。我误解了什么吗?起初,我认为我应该按百分比(在本例中为~7)来计算进程大小。也许我第一次是对的?

这为其他操作系统进程提供了一点空间。

数据库 (MySQL) 在同一台主机上。

我的问题是双重的。1) 我正在考虑安装 Varnish 以帮助减少数据库负载(几乎所有访问者都未经身份验证),加快初始响应时间等......对于一个只有这么少内存的系统,我疯了吗?如果我这样做,我正在考虑给它 256Mb。想法?显然,事情不会在缓存中停留很长时间。256/7 = ~36 页。然而,我希望“主要”页面将被缓存。主页和主页后面的一些主要页面将占用大量数据库,我想尽可能减少磁盘 IO 量。

2) 如果我确实安装了 Varnish,我想知道是否应该将 Apache 设置调整为当前设置的一半,因为我已经给了 Varnish 一半的内存。在这种低级配置中,Varnish 和 Apache 之间是什么关系?

httpd varnish

3
推荐指数
1
解决办法
2320
查看次数

Apache占用太多CPU

我正在尝试管理 Amazon 上的服务器,用于每月接收约 1 亿次综合浏览量的网站网络。不幸的是,我的 5 名开发人员团队中没有人拥有丰富的服务器管理经验。

现在我们将 MaxClients 设置为 1400。目前我们的流量大约是平均水平,我们总共有 1150 个 Apache 进程在运行,每个进程使用大约 2% 的 CPU!在这 1150 个中,有 800 个当前正在休眠,但仍在占用 CPU。我相信有办法优化这个。我有几个想法:

  1. 看来 Apache 正在为每个连接创建一个新进程。这是正常的吗?
  2. 有没有办法更快地终止休眠进程?
  3. 我们应该打开 KeepAlive 吗?每个页面加载大约 15-20 个中等大小的图形和大量的 javascript/css。

所以,这是我们的 Apache 设置。我们确实计划尽快与服务器管理员签约,但在我们找到某人之前,我真的很感激一些建议。

Timeout 25
KeepAlive Off
MaxKeepAliveRequests 200
KeepAliveTimeout 5

<IfModule prefork.c>
StartServers         100
MinSpareServers      20
MaxSpareServers      50
ServerLimit          1400
MaxClients           1400
MaxRequestsPerChild  5000
</IfModule>

<IfModule worker.c>
StartServers         4
MaxClients           400
MinSpareThreads      25
MaxSpareThreads      75
ThreadsPerChild      25
MaxRequestsPerChild  0
</IfModule>
Run Code Online (Sandbox Code Playgroud)

全顶输出:

top - 23:44:36 up 1 …
Run Code Online (Sandbox Code Playgroud)

memory httpd central-processing-unit apache-2.2

3
推荐指数
1
解决办法
1万
查看次数

如何找出谁向服务器发出大量请求?

我正在运行 Apache 服务器,想知道谁(IP 地址)在过去 24 小时内使用命令行发出了大量请求。还想找出目前谁拥有最开放的联系?

httpd apache-2.2

3
推荐指数
1
解决办法
116
查看次数

nginx:带有 fastcgi 的多个文档根

在我的 http 指令中使用单个文档根目录时,一切正常。但是,我想添加一个带有附加指令的位置指令,但我无法让 fastcgi 与这个附加的根一起工作(访问http://localhost/sqlbuddy时我收到一个白页)。

这是我的 nginx.conf 的摘录:

server {

root /home/tman/dev/project/trunk/data;
index index.php;

location /sqlbuddy {
    root /srv/http;
    index index.php;
}

location ~* \.php {
    fastcgi_pass 127.0.0.1:9000;
    include fastcgi.conf;
}
}
Run Code Online (Sandbox Code Playgroud)

还有我的 fastcgi.conf:

fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
fastcgi_param  QUERY_STRING       $query_string;
fastcgi_param  REQUEST_METHOD     $request_method;
fastcgi_param  CONTENT_TYPE       $content_type;
fastcgi_param  CONTENT_LENGTH     $content_length;

fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
fastcgi_param  REQUEST_URI        $request_uri;
fastcgi_param  DOCUMENT_URI       $document_uri;
fastcgi_param  DOCUMENT_ROOT      $document_root;
fastcgi_param  SERVER_PROTOCOL    $server_protocol;

fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;

fastcgi_param  REMOTE_ADDR        $remote_addr;
fastcgi_param  REMOTE_PORT        $remote_port;
fastcgi_param …
Run Code Online (Sandbox Code Playgroud)

linux nginx httpd fastcgi

3
推荐指数
1
解决办法
2万
查看次数

为什么在启动时自动启动 httpd 时会运行 9 个 httpd 进程?

A pgrep httpdyilds 9 pids:

1624
1651
1652
1653
1654
1655
1656
1657
1658
Run Code Online (Sandbox Code Playgroud)

如果我使用第一个 pid(此处1624)杀死 httpd 进程,则所有 httpd 进程都会被杀死。

虽然如果用第一个以外的 pid 杀死进程,只有那个进程会被杀死。一旦 httpd 进程数低于 6,它就会产生 httpd 进程并且 httpd 进程数保持在 6 不变。

当我手动启动 httpd 时不会发生这种情况。只创建了一个进程。

  • 为什么是上述行为?
  • httpd 是基于线程开始的吗?

Also I am running httpd on Fedora 15 on a 6 core processor.

而且我/etc/sysconfig/httpd/etc/sysconfig/httpd注释中的每一行都没有改变任何东西。

fedora httpd apache-2.2

3
推荐指数
1
解决办法
927
查看次数

搜索 apachectl -S 的结果

我有一个大约有 300 个虚拟主机的服务器。当我想确保将特定的 httpd.conf 文件加载到虚拟主机配置中并且语法正确时,我运行apachectl -S. 但问题是,我得到了大量的输出。

我已经尝试apacectl -S | grep 'foo'apachectl -S > foo.txt尝试使这些数据更易于管理,但是命令的输出不利于 grepping 或推送到文本文件中。

当我尝试时apachectl -S | grep 'foo',它只是返回apachectl -S.

当我尝试时apachectl -S > foo.txt, foo.txt 是一个空文件。

这可能与服务器的配置方式有关,因为我能够在本地计算机上成功 grep。

有什么建议?

httpd grep apache-2.2

3
推荐指数
1
解决办法
3025
查看次数

Apache HTTPD 二进制文件中缺少 Apachectl

我从这里提取了 httpd...tar.gz ,但我没有看到apachectl

[vagrant@centos48 opt]$ ls
httpd-2.2.23  httpd-2.2.23.tar.gz
[vagrant@centos48 httpd-2.2.23]$ find . -name apachectl
[vagrant@centos48 httpd-2.2.23]$ 
Run Code Online (Sandbox Code Playgroud)

httpd centos

3
推荐指数
1
解决办法
5346
查看次数

找不到用于 Monit apache2 监控的 httpd.pid

我是 Linux 新手,我在 Digital Ocean 上安装了 Ubuntu 12.04。

我安装了 Monit 并让它通过电子邮件警报成功监控 MySQL。

我也想监控 ​​Apache2,但找不到任何httpd.pid需要放入 monitrc 文件的文件。

我可以使用以下命令启动 Apache2: /etc/init.d/apache2 start

我可以通过以下方式停止 Apache2: /etc/init.d/apache2 stop

我可以使用以下命令重新启动 Spache2: /etc/init.d/apache2 restart

在没有 httpd.pid 文件的情况下,还有什么其他方法可以在 Monit 中监视 Apache2?

ubuntu httpd monit apache-2.2

3
推荐指数
1
解决办法
1万
查看次数

即使在修复了某些源之后,仍然“httpd 已死但子系统已锁定”

这是我迄今为止尝试过的:

编辑:/etc/sysconfig/httpd

PIDFILE=/var/run/httpd.pid
Run Code Online (Sandbox Code Playgroud)

编辑:/etc/httpd/conf/httpd.conf

PidFile /var/run/httpd.pid
Run Code Online (Sandbox Code Playgroud)

然后

killall -9 httpd
Run Code Online (Sandbox Code Playgroud)

结果:

httpd: no process killed
Run Code Online (Sandbox Code Playgroud)

然后:

sudo rm -f /var/lock/subsys/httpd
sudo service httpd restart
Run Code Online (Sandbox Code Playgroud)

结果:

Stopping httpd:                                            [FAILED]
Starting httpd:                                            [  OK  ]
Run Code Online (Sandbox Code Playgroud)

然后:

sudo service httpd status
Run Code Online (Sandbox Code Playgroud)

结果:

httpd dead but subsys locked
Run Code Online (Sandbox Code Playgroud)

仍然没有运气,我是否错过了解决此问题的方法?请帮忙

注意:当我启动 httpd 时,它不会在 /var/run 上生成 httpd.pid

Apache 错误日志

[Tue Dec 10 06:27:42 2013] [notice] Digest: generating secret for digest authentication ...
[Tue Dec 10 06:27:42 2013] [notice] Digest: done
[Tue Dec 10 06:31:27 2013] [notice] …
Run Code Online (Sandbox Code Playgroud)

redhat httpd

3
推荐指数
1
解决办法
2万
查看次数

我可以查看 Apache 正在使用的已解析配置吗?

在解决任何/所有包含等问题后,有没有办法查看正在运行的 Apache 实例正在使用的最终“有效”配置?

我正在查看一个包含包含网络的配置,并怀疑我遇到的一些问题与一切就绪的顺序有关。我认为 apachectl 可以验证配置没有语法错误,但我想知道我是否可以更进一步并以某种方式输出完全组装的配置。任何建议(除了清理这些不应该被允许发生的乱七八糟的包含)?

httpd httpd.conf apache-2.4

3
推荐指数
1
解决办法
1051
查看次数