Articles of 缓冲区

多less个nginx缓冲区太多了?

阅读nginx文档, proxy_buffer命令有这个解释性的消息: 这个指令设置了从代理服务器获得的缓冲区的数量和大小,从中读取答案。 默认情况下,一个缓冲区的大小等于页面的大小。 根据平台,这是4K或8K。 缺省是8个4k或8k缓冲区。 为什么nginx的作者select八个,而不是更高的数字? 如果我添加更多的缓冲区或更大的缓冲区大小,会出现什么问题?

使用nginx proxy_buffering和node jspipe理POST正文非常强大

我的设置可能看起来有点奇怪,但不应该太牵强:我有一个服务于PHP页面和静态文件的apache2实例。 我有一个节点js服务器处理file upload( POST )使用节点强大 。 最重要的是,我使用nginx 1.0.14 。 为了使用节点服务器在php文件中提供的表单上传,我决定放置nginx,这样我就可以保持相同的域,端口和协议。 所以基本上我有/上传我想要(直接)pipe道到我的节点js,最好外部的代理完全。 其余的是由apache2服务器处理: location /upload { client_max_body_size 10m; client_body_buffer_size 128k; proxy_connect_timeout 600; proxy_send_timeout 600; proxy_read_timeout 600; proxy_buffer_size 4k; proxy_buffers 4 32k; proxy_busy_buffers_size 64k; proxy_temp_file_write_size 64k; send_timeout 600; proxy_buffering off; proxy_pass https://node_backend; } location / { proxy_set_header Host $http_host; proxy_pass https://apache_backend; } 这是基于https://stackoverflow.com/a/1167559 我的问题是nginxcaching整个POST请求之前,从nginx发送到节点js。 我可以validation这一点,因为Chrome中的进度指示器在我的节点js被击中之前一直高达100%(即时从0-100%(因为它从本地主机发送到本地主机))。 我不明白为什么proxy_buffering off不按我期望的方式工作(它不应该缓冲,而是将请求传递到后端,因为它收到)。 […]

Linux:在TCP套接字上发送整个消息或不发送消息

我发送各种自定义消息结构下非阻塞TCP套接字。 我想在一个send()调用中发送整个结构,或者如果发送缓冲区中只有部分消息(即send()返回EWOULDBLOCK),则返回一个没有发送字节的错误。 如果没有足够的空间,我会扔掉整个结构并报告溢出,但是我想在这之后可以恢复,也就是说接收者只能接收到一系列有效的完整结构。 有没有办法检查发送缓冲区的可用空间,或者告诉send()调用如上所述? 基于数据报的套接字不是一个选项,必须是基于连接的TCP。 谢谢。

如何增加STDIN BUFFERSIZE

我正在使用Linux Debian 6.0.6,在STDIN缓冲区中遇到问题。 为了从STDIN得到input,我不能在STDIN中input多于4095个字符,有什么方法可以增加STDIN缓冲区大小。

我怎样才能从PCM的缓冲区?

我想在Linux上用ALSA播放一个PCM文件,下面是我的代码: #include <stdio.h> #include <stdlib.h> #include <alsa/asoundlib.h> main (int argc, char *argv[]) { int i; int err; short buf[128]; snd_pcm_t *playback_handle; snd_pcm_hw_params_t *hw_params; if ((err = snd_pcm_open (&playback_handle, argv[1], SND_PCM_STREAM_PLAYBACK, 0)) < 0) { fprintf (stderr, "cannot open audio device %s (%s)\n", argv[1], snd_strerror (err)); exit (1); } if ((err = snd_pcm_hw_params_malloc (&hw_params)) < 0) […]

在Linux / C编程中,使用函数write在缓冲区上移动指针?

如果我使用一个文本文件作为缓冲区,调用: write(fd1, *buffer, count) write(fd2, *buffer, count) 会从缓冲区写入fd1和fd2的相同数据,或者写入fd2的数据将从fd1写入的缓冲区开始? (潜伏在这里,第一次问一些问题,对不起,如果我做了/写错了什么)

我怎样才能正确地读取input从标准input缓冲没有截断任何单词?

嗨,我正在编写一个简单的程序,打算从标准input读取一些文本,然后find该文本中的一些单词,并将其replace为“?” 字符,最后将结果放在标准输出中。 我的问题是,如果当前的缓冲区结束在一个单词的中间,我正在search该单词,“strstr”函数不会发现它作为一个命中。 例: 随着10的缓冲区,find“惊人的” input:“Wordnet是一个真正令人惊讶的软件,我们在Roistr中使用它来进行语义相关,其中一个有用的部分是每个synset都有使用的单词sense的例子,但是有时这些可能会误导一些” 第一个缓冲区:“Wordnet是” – >没有命中 第二缓冲区:“一个真正的” – >没有命中 第三个缓冲区:“mazing pie” – >没命中 正如你可以看到,在第三个缓冲区,我得到了一个错误的否定词令人惊讶,因为它是由缓冲区长度切断。 我需要一个不取决于缓冲区大小的解决scheme,因为例如一个缓冲区[500]可以解决这个例子中的问题,但是如果我得到一个50000的input,问题可能会再次出现。 谢谢 对不起我的英语不好。 我的代码: char* aux = "is"; char* pch; char buff[100]; int readd; int stringsize = strlen(aux); while (((readd = read(0, buff, sizeof buff)) > 0)) { pch = strstr(buff, aux); if (pch != 0) { strncpy(pch, […]

如何在Linux内核模块之间共享缓冲区

我正在研究一个需要处理来自另一个模块的数据的内核模块。 如何分享缓冲区? 我曾尝试使用EXPORT_SYMBOL来访问数组 char my_test_buffer[100]; EXPORT_SYMBOL(my_test_buffer); 如何在其他模块访问这个?

如何使用newrelic with / out buffers / cached来监视可用内存

我正在评估newrelic服务器监控,并找不到如何监视操作系统用来缓冲文件的内存。

意外的input62; 9; c62; 9; c62; 9; c62; 9; c在将缓冲区写入标准输出

我们的目标是读取文件并将缓冲区直接写入标准输出,以便进一步处理。 这如预期的文本文件,图像和PDF。 但是在阅读PDF文件时,在shellinput中会显示一个奇怪的input:62; 9; c62; 9; c62; 9; c62; 9; c。 我在Ubuntu 14.04.3 LTS(14.04)上编译test.c。 贝壳 user@user-virtualmachine:~$./test <prints binary data here … … end of binary data> user@user-virtualmachine:~$62;9;c62;9;c62;9;c62;9;c 当我检查md5sum这是一个比赛,所以没有什么奇怪的: md5sum paper.pdf 5152a6c5b7deb364385fb3dd27c586db paper.pdf ./test | md5sum 5152a6c5b7deb364385fb3dd27c586db – 我试图在网上查找它,它说,一些二进制数据可能会导致shell写入到标准输出时以意想不到的方式行事。 这个问题能解决吗? 代码如下所示。 TEST.C #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <unistd.h> int main() […]