我在一个相当繁忙的互联网站点工作,通常会有非常大的流量峰值.在这些峰值期间,请求每秒数百页,这会产生随机502网关错误.
现在我们在配备4个SAS 15k驱动器(raid10)的机器上运行Nginx(1.0.10)和PHP-FPM,配备16核CPU和24GB DDR3内存.我们还使用了最新的Xcache版本.DB位于另一台机器上,但该机器的负载非常低,并且没有问题.
在正常负载下,一切运行完美,系统负载低于1,PHP-FPM状态报告从未真正显示超过10个活动进程.总有大约10GB的ram可用.在正常负载下,机器每秒处理大约100次综合浏览量.
当流量大幅增加到达时,问题就出现了,并且机器要求每秒数百次页面浏览量.我注意到FPM的状态报告随后显示多达50个活动进程,但这仍然低于我们配置的300个最大连接数.在这些峰值期间,Nginx状态报告最多5000个活动连接,而不是正常平均值1000.
操作系统信息:CentOS 5.7版(最终版)
CPU:Intel(R)Xeon(R)CPU E5620 @ 2.40GH(16核)
PHP-fpm.conf
daemonize = yes
listen = /tmp/fpm.sock
pm = static
pm.max_children = 300
pm.max_requests = 1000
Run Code Online (Sandbox Code Playgroud)
我没有设置rlimit_files,因为据我所知它应该使用系统默认值,如果你不这样做.
fastcgi_params(仅向标准文件添加值)
fastcgi_connect_timeout 60;
fastcgi_send_timeout 180;
fastcgi_read_timeout 180;
fastcgi_buffer_size 128k;
fastcgi_buffers 4 256k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
fastcgi_intercept_errors on;
fastcgi_pass unix:/tmp/fpm.sock;
Run Code Online (Sandbox Code Playgroud)
nginx.conf
worker_processes 8;
worker_connections 16384;
sendfile on;
tcp_nopush on;
keepalive_timeout 4;
Run Code Online (Sandbox Code Playgroud)
Nginx通过Unix Socket连接到FPM.
sysctl.conf的
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 1
kernel.core_uses_pid = …Run Code Online (Sandbox Code Playgroud) 我目前正在为一个非常繁忙的互联网网站构建API.它是用PHP编写的PHP.现在这是我写的第一个API,允许人们远程访问他们的帐户.一旦API在线,开发人员就可以从中编写自己的工具.
现在我有API工作,但我不确定它是否完全安全.
一个可行的示例网址是: http://domain.com/api.php?api_option=list&api_user_name=USERNAME&api_user_password=PASSWORD
USERNAME:将是用户的实际用户名
PASSWORD:将是他们的实际密码的MD5编码字符串.
如果详细信息匹配,则返回结果,如果不匹配,则返回错误.
所有外部$_GET输入都得到了mysql_real_escape_string()治疗.
我想保持简单,但我不确定这种方式是否是一种安全的方式,可以使用直接连接到用户帐户数据的公共API.
非常感谢您的想法和建议.
我有问题以我想要的方式排序数组.
这是我的数组的示例输出:http://pastebin.com/GJNBmqL7
数据来自各种数据库,因此我将数据放入数组的方式受到限制.
[2]总是包含一个linux时间戳.现在我希望整个数组按时间戳排序,首先是最低值.
我该怎么做呢?
我正在尝试在MySQL INNODB表上运行一个非常简单的查询:
SELECT *
FROM items
WHERE MATCH (item_title,item_description) AGAINST ('dog')
Run Code Online (Sandbox Code Playgroud)
列两者item_title并item_description有一个FULLTEXT索引.
我一直收到这个错误:
找不到与列列表匹配的FULLTEXT索引
我的问题:当我查询只 item_title或只是 item_description然后正常工作.但是当我在1个查询中同时执行这两个操作时,如上所示,我得到了该错误.
知道什么是错的吗?
我通过iframe在我的网站上使用facebook like按钮.
现在您必须指定iframe的宽度.由于类似按钮的各种语言,这意味着我必须将宽度设置为至少70px.
现在我想将like按钮对齐到我网站的最右边,现在我可以通过在iframe的css样式中添加"text-align:right"来实现.iframe显示在右侧,但不是一直显示在右侧.
这是因为iframe宽度,70px,例如英文按钮只有55px.
现在我想要的是:将iframe的实际内容与实际iframe的右侧对齐.
http://pastehtml.com/view/1dnwtbh.html
在这里,我建立了一个例子.它在div ive构建的右侧对齐,但因为iframe比实际的按钮大,所以它与右边没有完美对齐.我希望按钮在iframe中与右侧对齐.
我希望你们能帮忙
我正在使用一个小的bash脚本来计算具有特定名称的脚本运行的频率.
ps -ef | grep -v grep | grep scrape_data.php | wc -l
Run Code Online (Sandbox Code Playgroud)
是我使用的代码,通过ssh输出scrape_data.php运行的次数.目前输出为3例如.所以这很好.
现在我正在尝试制作一个小小的脚本,当计数小于1时会做一些事情.
#!/bin/sh
if [ ps -ef | grep -v grep | grep scrape_data.php | wc -l ] -lt 1; then
exit 0
#HERE PUT CODE TO START NEW PROCESS
else
exit 0
fi
Run Code Online (Sandbox Code Playgroud)
上面的脚本是我到目前为止,但它不起作用.我收到这个错误:
[root@s1 crons]# ./check_data.sh
./check_data.sh: line 4: [: missing `]'
wc: invalid option -- e
Run Code Online (Sandbox Code Playgroud)
我在if语句中做错了什么?
我正在使用Xcode 6中的第一个SpriteKit应用程序,在Swift中编码.现在我从透明的png文件中制作了一些漂亮的按钮.但我想按下按钮时显示视觉效果.
我现在如何显示静态按钮的示例:
let playButton = Button(imageNamed:"playButton")
playButton.position = CGPointMake(self.size.width/2, self.size.height/2 - playButton.size.height * 2.5 - displacement)
self.sharedInstance.addChildFadeIn(playButton, target: self)
Run Code Online (Sandbox Code Playgroud)
任何效果都足够了,可能是脉冲效应,或按下时发光.我搜索过,但我在Swift中找不到任何东西.
编辑:更多信息
class Button: SKSpriteNode {
init(imageNamed: String) {
let texture = SKTexture(imageNamed: imageNamed)
// have to call the designated initializer for SKSpriteNode
super.init(texture: texture, color: nil, size: texture.size())
}
override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
self.runAction(SKAction.scaleTo(1.3, duration: kButtonFadingSpeed))
}
override func touchesMoved(touches: NSSet, withEvent event: UIEvent) {
self.runAction(SKAction.scaleTo(1.3, duration: kButtonFadingSpeed))
}
override func touchesEnded(touches: NSSet, withEvent event: …Run Code Online (Sandbox Code Playgroud) 我有一台Linux机器64位(centos5.5),2.83GHz Q9550,6gb内存和一个SATA 500gb驱动器.
从这台机器我只提供缩略图,大多数大约10kb,此时服务器上有大约700万缩略图.我把它们设置在/ 25/25/25/25文件夹设置中,这是我推荐的.
平均而言,nginx状态报告显示即时提供大约300到400个活动连接.
例:
Active connections: 297
server accepts handled requests
1975808 1975808 3457352
Reading: 39 Writing: 8 Waiting: 250
Run Code Online (Sandbox Code Playgroud)
现在的问题是这台机器非常困难,而且随着我的网站越来越忙,它越来越慢.负载总是在8到9左右.
我注意到iostat显示超过100%的util.
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
sda 0.20 1.40 99.80 31.14 1221.56 255.49 11.28 114.14 831.81 7.62 99.84
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
sda 0.20 0.60 100.80 24.00 1192.00 203.20 11.18 113.77 775.42 8.02 100.04
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s …Run Code Online (Sandbox Code Playgroud) 我有一个PHP突出显示功能,使某些单词变粗.
下面是函数,它很有用,除非数组:$ words包含单个值:b
例如,有人搜索:jessie j price tag feat bob
这将在数组$ words中包含以下条目:jessie,j,price,tag,feat,b,o,b
当'b'出现时,我的整个函数出错了,它显示了一大堆错误的html标签.当然,我可以从数组中去掉任何'b'值,但这并不理想,因为突出显示不适用于某些查询.
此示例脚本:
function highlightWords2($text, $words)
{
$text = ($text);
foreach ($words as $word)
{
$word = preg_quote($word);
$text = preg_replace("/\b($word)\b/i", '<b>$1</b>', $text);
}
return $text;
}
$string = 'jessie j price tag feat b o b';
$words = array('jessie','tag','b','o','b');
echo highlightWords2($string, $words);
Run Code Online (Sandbox Code Playgroud)
将输出:
<<<b>b</b>><b>b</b></<b>b</b>>>jessie</<<b>b</b>><b>b</b></<b>b</b>>> j price <<<b>b</b>><b>b</b></<b>b</b>>>tag</<<b>b</b>><b>b</b></<b>b</b>>> feat <<b>b</b>><b>b</b></<b>b</b>> <<b>b</b>>o</<b>b</b>> <<b>b</b>><b>b</b></<b>b</b>>
Run Code Online (Sandbox Code Playgroud)
这只会发生,因为数组中有"b".
你能看到我能改变的任何东西让它正常工作吗?
我有一个简单的Chrome扩展程序,在Google Chrome中显示一个小图标.点击后,它会加载我网站的搜索页面,该页面会将您重定向到正确的页面.
https://chrome.google.com/webstore/detail/w3patrol-watch-over-any-w/addcgpijdjacmndaadfgcpbfinagiplm是扩展程序.
现在,谷歌迫使我更新到清单版本2,而不是1.但这打破了我的工作扩展.
在manifest.json我添加了manifest_version 2,但从那时起,当我点击它时,图标不再起作用了.
{
"background": {
"page": "background.html"
},
"browser_action": {
"default_icon": "icon19.png",
"default_title": "__MSG_default_title__"
},
"default_locale": "en",
"description": "__MSG_description__",
"icons": {
"128": "icon128.png",
"19": "icon19.png",
"48": "icon48.png"
},
"name": "__MSG_name__",
"permissions": [ "tabs", "http://*.w3patrol.com/" ],
"update_url": "http://clients2.google.com/service/update2/crx",
"version": "1.0",
"manifest_version": 2
}
Run Code Online (Sandbox Code Playgroud)
这是background.html
<script type="text/javascript">
chrome.browserAction.onClicked.addListener(function(tab) {
chrome.tabs.getSelected(null,function(tab) {
chrome.tabs.create( { url: "http://w3patrol.com/search.php?q=" +tab.url } );
});
});
</script>
Run Code Online (Sandbox Code Playgroud)
我需要添加/更改以使其与清单版本2一起使用?
我有一个非常简单的脚本,它读出一个txt文件,将内容放入一个数组中.
这完美,我能做到print_r($array); 它输出所有数据.
我的剧本:
<?php
$file = 'countries.txt';
$countries_output = file_get_contents($file);
$countries_pieces = explode("\n", $countries_output);
if (in_array("Sweden", $countries_pieces)) {
echo "Sweden was found";
}
else
{
echo'NOT FOUND';
}
print_r($countries_pieces);
?>
Run Code Online (Sandbox Code Playgroud)
我不明白为什么它在我的阵列中找不到"瑞典"的值,当它显然在那里时.
这是输出:https://pastebin.com/z9rC9Qvk
我也print_r数组,所以你可以看到'瑞典'确实在数组中.
希望有人可以帮忙:)
我刚开始在我的网站上提供用户帐户(大型PR6网站,声誉良好),我注意到注册电子邮件几乎总是发送到收件人垃圾邮箱.
到目前为止,我们只发了几封电子邮件,所以它不像我们一直在抨击成千上万.
我通过PHP发送电子邮件和mail()函数.您可以在下面找到我使用mail()函数发送的标题.
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'From: Domain.com <noreply@mydomain.com>' . "\r\n";
Run Code Online (Sandbox Code Playgroud)
是否有办法或技巧来绕过这些垃圾邮件过滤器?它显然不是我发送的垃圾邮件.注册邮箱包含3个链接.