小编Mr.*_*oon的帖子

高负载下的502网关错误(nginx/php-fpm)

我在一个相当繁忙的互联网站点工作,通常会有非常大的流量峰值.在这些峰值期间,请求每秒数百页,这会产生随机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)

php centos nginx

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

使用PHP/MYSQL构建安全公共API

我目前正在为一个非常繁忙的互联网网站构建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.

非常感谢您的想法和建议.

php mysql api

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

数组按时间戳排序PHP

我有问题以我想要的方式排序数组.

这是我的数组的示例输出:http://pastebin.com/GJNBmqL7

数据来自各种数据库,因此我将数据放入数组的方式受到限制.

[2]总是包含一个linux时间戳.现在我希望整个数组按时间戳排序,首先是最低值.

我该怎么做呢?

php arrays sorting

11
推荐指数
4
解决办法
2万
查看次数

Innodb:查询超过1列时,找不到匹配列列表的FULLTEXT索引

我正在尝试在MySQL INNODB表上运行一个非常简单的查询:

SELECT * 
FROM items 
WHERE MATCH (item_title,item_description) AGAINST ('dog')
Run Code Online (Sandbox Code Playgroud)

列两者item_titleitem_description有一个FULLTEXT索引.

我一直收到这个错误:

找不到与列列表匹配的FULLTEXT索引

我的问题:当我查询 item_title只是 item_description然后正常工作.但是当我在1个查询中同时执行这两个操作时,如上所示,我得到了该错误.

知道什么是错的吗?

mysql innodb full-text-search

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

Facebook Like按钮在右边的Iframe中对齐文本

我通过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中与右侧对齐.

我希望你们能帮忙

css facebook alignment facebook-like

5
推荐指数
1
解决办法
6297
查看次数

简单的bash脚本按名称计算运行进程

我正在使用一个小的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语句中做错了什么?

ssh bash cron

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

按下时将视觉效果添加到SKSpriteNode

我正在使用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)

ios sprite-kit skspritenode swift

5
推荐指数
1
解决办法
2696
查看次数

为服务器大量的静态内容调整Nginx/CentOS

我有一台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)

performance centos nginx iostat

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

PHP搜索文本突出显示功能

我有一个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".

你能看到我能改变的任何东西让它正常工作吗?

php highlight

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

Chrome扩展程序与背景页面不使用清单版本2

我有一个简单的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一起使用?

html javascript google-chrome google-chrome-extension

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

PHP in_array()找不到数组中的内容

我有一个非常简单的脚本,它读出一个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数组,所以你可以看到'瑞典'确实在数组中.

希望有人可以帮忙:)

php arrays

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

帮助,注册电子邮件转到垃圾邮件收件箱

我刚开始在我的网站上提供用户帐户(大型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个链接.

php email gmail email-spam spam

0
推荐指数
1
解决办法
4140
查看次数