小编Dan*_*iel的帖子

Redis复制和客户端输出缓冲区限制

我在使用Redis复制时遇到问题,无法解决。主服务器不断达到客户端输出缓冲区限制。

主配置:

# redis-cli -p 6380 config get client-output-buffer-limit
1) "client-output-buffer-limit"
2) "normal 0 0 0 slave 536870912 536870912 0 pubsub 33554432 8388608 60"
Run Code Online (Sandbox Code Playgroud)

主日志:

Client id=3014598 addr={{MASTER}} fd=6 name= age=217 idle=217 flags=S db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=3723 oll=4806 omem=581952061 events=rw cmd=psync scheduled to be closed ASAP for overcoming of output buffer limits.
Run Code Online (Sandbox Code Playgroud)

主信息:

# redis-cli -p 6380 info
role:master
connected_slaves:1
slave0:ip={{SLAVE_IP}},port=6380,state=wait_bgsave,offset=0,lag=0  //  stays on wait_bgsave
Run Code Online (Sandbox Code Playgroud)

从站信息:

role:slave
master_host:{{MASTER_IP}}
master_port:6380
master_link_status:down
master_last_io_seconds_ago:-1
master_sync_in_progress:1
Run Code Online (Sandbox Code Playgroud)

Redis版本:3.0.2

数据库大小:〜21GB主服务器是30GB Ram EC2实例从服务器是60GB Ram …

replication redis

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

跨多台服务器的 Laravel 任务调度器没有重叠

我想知道是否有人有让 Laravel 任务计划程序在不跨多个服务器重叠的情况下工作的经验。

把它放在上下文中:我在负载均衡器后面有 3 个 API 服务器。我知道任务调度程序允许在单个服务器上使用 withoutOverlap 标志,但是我如何在所有服务器上使用相同的主体?我只希望 1 台服务器运行计划任务,而其他 2 台服务器不运行它们。

据我所知,我的选择是:

从 2 个服务器中删除 crontab。 我的服务器是自动化的,并且不想从任何服务器中删除 crontab 作业,因为这会使我的自动化构建复杂化。

编写一个包,使用 DB 将任务限制为仅运行的第一台服务器。 我可以这样做,但我想知道它是否已经完成(在谷歌上找不到任何东西)

有什么建议吗?

php laravel laravel-5.2

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

无法使prerender.io nginx配置与https重写一起使用

我想我尝试编写的这个Nginx配置可能比我可以尝试的更多。我是nginx config的新手,并且我正在尝试编写一个非常复杂的配置(至少对我来说)。任何帮助将不胜感激。

配置需要:

  1. 将http $ http_x_forwarded_proto重定向到https(在ec2负载均衡器处https断开)
  2. 与prerender.io的Nginx中间件一起使用(用于可爬网单页应用程序的SEO)
  3. 将任何查询参数(_escaped_fragment_=)从http传递到https
  4. 将所有子域请求重定向到https://example.com/c/ $ subdomain
  5. 允许http://example.com/healthcheck.txt通过http(负载均衡器运行状况检查)

这是我当前的配置

server {
    listen 80;
    server_name example.com;

    root   /var/www/html/dist;
    index  index.html;

    error_log  /var/log/mysite/error.log;
    access_log /var/log/mysite/access.log;

    location /healthcheck.txt {
        break;
    }

    location / {
        try_files $uri @prerender;

        if ($http_x_forwarded_proto != "https") {
            set $urltest N;
        }

        if ($query_string) {
            set $urltest "${urltest}Y";
        }

        if ($urltest = N) {
            rewrite ^(.*)$ https://example.com$1 permanent;
        }

        if ($urltest = NY) {
            rewrite ^(.*)$ https://example.com$1?$query_string permanent;
        }
    } …
Run Code Online (Sandbox Code Playgroud)

nginx prerender

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

如何将ContentType添加到AWS PHP SDK MultiPartUploader

我已经搜索了如何将简单的ContentType元数据添加到AWS PHP SDK中的MultiPartUploader.该文档明确提及如何做到这一点的PutObject,但没有提及如何使用MultiPartUploader做到这一点.

我已经尝试了我可以在网上找到的每种方法,但没有任何工作,我的文件总是被设置为application/octet-stream.

有人对这个有经验么?这是我的代码:

$uploader = new MultipartUploader($this->s3, $local_path, [
    'bucket'      => env('AWS_BUCKET'),
    'key'         => $path .'/'. $filename,
    'contentType' => 'video/mp4',  //  have tried this
    'metaData'    => [             //  have tried this (all well as all variations of caps)
        'contentType' => 'video/mp4',
    ]
]);

do 
{
    try 
    {
        $result = $uploader->upload();
    } 
    catch (MultipartUploadException $e) 
    {
        $uploader = new MultipartUploader($this->s3, $local_path, [
            'state' => $e->getState(),
        ]);
    }
} 
while (!isset($result));
Run Code Online (Sandbox Code Playgroud)

通过MultiPartUploader类阅读后,它看起来像contentType中应自动设置的,但它没有被设置.

我正在使用SDK的v3

任何建议将不胜感激!

php amazon-web-services aws-php-sdk

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