我试图理解以下场景:
Gateway Timeout
在一段时间后响应我想工人的重新启动并没有真正发生,或者该机制被负载阻塞了?我想了解解决此问题的方法。
谁能解释这里发生了什么?非常感谢!
PS:我绑定使用gunicorn 18.0,目前无法使用更新版本。
这是我使用的配置。
nginx:
# nginx
upstream gunicorn_app {
server 127.0.0.1:8100;
}
server {
listen 443 ssl;
...
# skipping static files config
...
location @proxy_gunicorn_app {
proxy_read_timeout 1800;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto …
Run Code Online (Sandbox Code Playgroud) 对于像reddit这样的网站,有很多上/下投票和每个主题的很多评论,我该怎么办?
Lighttpd/Php或Lighttpd/CherryPy/Genshi/SQLAlchemy?
对于数据库,什么会扩展更好/最快的MySQL(4.1或5?)或PostgreSQL?
digg或任何其他高流量网站如何存储用户会话?他们用什么来存储用户会话?文件系统,DB(哪一个?),memcache或两者兼而有之?
让我们想象一个简单的情况.登录用户在登录期间设置了"记住我"标记.我们设置了一个会话cookie,其截止日期为1年.例如,我们将会话保留在memcache中,但我们也应该在DB中保存此会话的记录(在我的版本中).只有具有"记住我"标志的用户才会存储在DB中.这是存储会话的正确方法吗?我的意思是高流量网站,当然(有2个或更多应用服务器,2个或更多数据库,memecache服务器等).在小型网站中默认存储会话方式(在文件系统中)是可以的.
我试图搜索谷歌,但未能找到任何有关它的信息.我已经从"高级PHP编程"一书中读到了一些解决方案,但主要的重点是自定义会话存储处理程序.
真的希望听到好的想法或链接!
谢谢.
我正在编写一个高负载的守护进程,它应该在FreeBSD 8.0和Linux上运行.守护程序的主要目的是传递其标识符请求的文件.通过对db的请求将标识符转换为本地文件名/文件大小.然后我使用顺序mmap()
调用来传递文件块send()
.
但是有时文件系统中的db和filesize中的文件大小不匹配(realsize <db中的大小).在这种情况下,我发送了所有实际数据块,当下一个数据块被映射时 - mmap没有返回任何错误,只是通常的地址(我也检查过errno变量,它在mmap之后等于零).当守护进程尝试发送此块时,它会获得Segmentation Fault.(在FreeBSD 8.0 amd64上保证发布此行为)
我打开前使用安全检查以确保stat()
通话时的尺寸.然而现实生活告诉我,在罕见的情况下仍然可以提升段错误.
所以,我的问题是有一种方法可以在解除引用之前检查指针是否可访问?当我在gdb中打开核心时,gdb说给定地址超出范围.可能有人可以提出另一个解决方案.
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/mman.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <time.h>
#include <unistd.h>
#define FILENAME "./datafile"
int main()
{
unsigned long i, j;
srand(time(NULL));
unsigned long pagesize = sysconf(_SC_PAGESIZE);
unsigned long basesize = 4 * pagesize;
unsigned long cropsize = 2 * pagesize;
// create 4*pagesize sized file
int f = creat(FILENAME, 0644);
for (i = 0; i < basesize; …
Run Code Online (Sandbox Code Playgroud) 我有很多(例如)帖子,标有一个或多个标签.可以创建或删除帖子,并且用户也可以对一个或多个标签进行搜索请求(与逻辑AND结合).我想到的第一个想法是一个简单的模型
class Post(db.Model):
#blahblah
tags = db.StringListProperty()
Run Code Online (Sandbox Code Playgroud)
创建和删除操作的实现是显而易见的.搜索更复杂.要搜索N个标签,它将执行N GQL查询,例如"SELECT*FROM Post WHERE tags =:1"并使用游标合并结果,并且它具有糟糕的性能.
第二个想法是分离不同实体中的标签
class Post(db.Model):
#blahblah
tags = db.ListProperty(db.Key) # For fast access
class Tag(db.Model):
name = db.StringProperty(name="key")
posts = db.ListProperty(db.Key) # List of posts that marked with tag
Run Code Online (Sandbox Code Playgroud)
它通过密钥从db获取标签(比通过GQL快得多)并将其合并到内存中,我认为此实现具有比第一个更好的性能,但是非常频繁可用的标签可以超过允许单个数据存储对象的最大大小.还有另外一个问题:数据存储区只能修改一个单个对象~1 /秒,因此对于频繁使用的标记,我们也存在修改延迟的瓶颈.
有什么建议?
我是美国一所大学的网站管理员.我们网站上有很多要求,我已经建立并在过去7年左右负责.我一直在为我们的网站构建越来越复杂的功能,我的做法一直是尽可能多地将编程负担放在我们的多处理器Microsoft SQL服务器上 - 使用存储过程,视图等,并填写 - 从IIS Web服务器使用PHP,ASP或Perl无法完成的任务.两台服务器都是非常强大且功能强大的机 由于我一直独自完成这项工作已经很长时间没有其他任何人进行头脑风暴,我很好奇我的方法是否适合我们未来更高负荷的情况.
我的问题是:使用嵌套的SELECT语句,视图,存储过程和聚合函数将更多的负载负担放在SQL服务器上是否更好?或者我应该使用服务器端编译来提取多个更简单的查询并通过它们进行处理时间脚本像PHP?继续保持开启或提出更好的方法?
在我做了一些负载跟踪之后,我最近对性能更感兴趣,并且了解到我已经在SQL服务器的肩膀上放了多少.Web服务器和SQL服务器全天快速响应,几乎不考虑我对它们的影响,但我想做好准备并自己进行培训并升级现有代码优化的最佳实践.它变得重要的时间.
感谢您的建议和意见.
我正在寻找创建一个高流量的聊天网站,可能是视频流与服务器上发生的一些图像处理.
扫描频道API(http://code.google.com/appengine/docs/python/channel/overview.html)让我充满希望,这可以在没有AJAX轮询的情况下完成,而且一般认为GAE具有很强的可扩展性.
我还有一些顾虑:
1)它可以支持数万个同时实时互动的用户而不会滞后吗?CPU使用率是否有上限?
2)我(可能)将它写在J2EE框架之上.GAE是否保证每个新请求都可以访问全局内存数据存储区,只要应用程序在服务器上运行(Java语言中的"ServletContext")并且可能存储数千兆字节的数据,该数据存储区就可用?有记忆帽吗?
3)完整的J2SE和J2EE堆栈是否可用?我能包括我想要的任何图书馆吗?
4)对于这类问题,有没有比GAE更好的解决方案?我一直在考虑租用几台专用服务器,但这将达到数千/月......
提前致谢!
google-app-engine high-load web-traffic video-streaming chatroom
我正在通过将<img>
标记嵌入到网站来制作高负荷的网络统计系统.我想做的是:
我正在使用Ruby,我将制作一个纯机架应用程序来获取标题并将它们放入队列以进行进一步计算.
我无法解决的问题是,如何配置sphinx为Rack应用程序提供标头,并返回静态图像作为回复而无需等待Rack应用程序的响应?
此外,如果有更常见的Ruby解决方案,则不需要Rack.
我们的 Web 项目有非常奇怪的问题。
我们用:
2 Intel(R) Xeon(R) CPU E5520 @ 2.27GHz
12 GB 内存
我们每秒大约有 20 次点击。每秒 4-5 个请求很重——这是一个搜索请求。
我们使用 nginx + php-fpm (5.3.22)
安装在另一台机器上的 MySQL 服务器。
大多数情况下,我们的平均负载低于 10,CPU 使用率约为 50%
有时我们的 CPU 使用率约为 95%,之后平均负载增长到 50 甚至更多!!!
你可以在这里看到负载平均和 CPU 使用率(我在这里发送图像的声誉很低)
负载平均
CPU 使用率
我们必须重新加载 php-fpm ( /etc/init.d/php-fpm reload ) 以使情况正常化。
这可能每天发生 4-5 次。
我尝试使用 strace 来检查这种情况。
对不起,长日志!命令 strace -cp PID
PID – 的输出是随机的 php-fpm 进程 ID(我们启动 100 个 php-fpm 进程)。
这两个导致CPU使用率高的时刻。
Process 17272 attached - interrupt to quit
Process 17272 …
Run Code Online (Sandbox Code Playgroud) 我想澄清php-fpm如何使用动态流程管理器管理工作人员.
我们假设我们有以下配置:
pm = dynamic
pm.max_children = 100
pm.start_servers = 30
pm.min_spare_servers = 20
pm.max_spare_servers = 60
Run Code Online (Sandbox Code Playgroud)
如你所见,这是关于php-fpm如何管理进程的一个普遍问题.更具体地说,我想了解php-fpm中pm.max_children和pm.max_spare_servers之间的区别.