- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我最近从共享主机切换到专用主机,这给了我更多的监控/控制。我一直在尝试调试自从切换之前就遇到的问题,内存使用率非常高。我想我已经将其范围缩小到一个特定的脚本,该脚本是对 Instagram feed/api 的订阅。它在 codeIgniter 框架中工作。
这是我的流程的屏幕截图。请注意非常高的 httpd 内存值
这是我在 codeIgniter 中的 Controller
class Subscribe extends CI_Controller {
function __construct() {
parent::__construct();
$this->instagram_api->access_token = 'hidden';
}
function callback()
{
//echo anchor('logs/activity.log', 'LOG');
$min_id = '';
$next_min_id = '';
$this->load->model('Subscribe_model');
$min_id = $this->Subscribe_model->min_id();
echo $min_id;
$pugs = $this->instagram_api->tagsRecent('tagg','',$min_id);
if($pugs){
if (property_exists($pugs->pagination, 'min_tag_id')) {
$next_min_id = $pugs->pagination->min_tag_id;
}
foreach($pugs as $pug) {
if(is_array($pug)) {
foreach($pug as $media) {
$url = $media->images->standard_resolution->url;
$m_id = $media->id;
$c_time = $media->created_time;
$user = $media->user->username;
$filter = $media->filter;
$comments = $media->comments->count;
$caption = $media->caption->text;
$link = $media->link;
$low_res=$media->images->low_resolution->url;
$thumb=$media->images->thumbnail->url;
$lat = $media->location->latitude;
$long = $media->location->longitude;
$loc_id = $media->location->id;
$date = new DateTime('2000-01-01', new DateTimeZone('Pacific/Nauru'));
$data = array(
'media_id' => $m_id,
'min_id' => $next_min_id,
'url' => $url,
'c_time' => $c_time,
'user' => $user,
'filter' => $filter,
'comment_count' => $comments,
'caption' => $caption,
'link' => $link,
'low_res' => $low_res,
'thumb' => $thumb,
'lat' => $lat,
'long' => $long,
'loc_id' => $loc_id,
);
$this->Subscribe_model->add_pug($data);
}
}
}
}
这是模型......
class Subscribe_model extends CI_Model {
function min_id(){
$this->db->order_by("c_time", "desc");
$query = $this->db->get("pugs");
if ($query->num_rows() > 0)
{
$row = $query->row();
$min_id = $row->min_id;
if(!$min_id){
$min_id ='';
}
}
return $min_id;
}
function add_pug($data){
$query = $this->db->get_where('pugs', array('media_id'=>$data['media_id']));
if($query->num_rows() > 0){
return FALSE;
}else{
$this->db->insert('pugs', $data);
}
}
}
//============================编辑==========================//
我已经将一些服务转换为 fast-cgi,它似乎显着降低了我的内存使用量,但我注意到 CPU 有所增加。我希望切换到专用服务器会少得多的麻烦并使事情变得容易得多,但到目前为止这一直是一场噩梦。恐怕我已经贪多嚼不烂了。
我的另一个担心是向服务器添加更多域名。这是否会添加一个新进程,该进程将像上一个图像中运行的多个 php-cgi 一样运行得非常高?
这是我最近的输出...
最佳答案
为了确保没有真正的内存泄漏,请尝试只在服务器上运行 httpd/myslqd (killall Xorg/telinit 3),然后停止上述两个服务。记下 free|grep Mem |sed 's/\([^0-9]*[^\]*\)\{3\}\([^\]*\).*/\1/'
的输出。这是 RAM 的 X 个可用字节。现在,启动 httpd/mysqld 服务并让它们运行数百个请求。停止服务并再次记下数字,重复直到对中值结果感到满意。
httpd 消耗大量 RAM 的情况并不罕见。 mysqld 也在内存中缓存。这只是因为,如果连续多次(连续)遇到相同的请求,则静态缓存已准备好缓冲并且可以使用。
对于 PHP 来说,类是预编译的,一旦系统在第一次编译后需要它,它就不必逐行解释脚本,它将有一个字节码编码的对象可以使用。如果 fstat.mtime > bytecode.mtime.. 则编译当然会重新编译..
您可以使用以下命令分析非交换类型的实际内存使用情况:
ps -ylC httpd --sort:rss
提供静态文件的子进程大小约为2-3M。对于PHP等动态内容,可能在15M左右
要配置 apache 如何设置工作线程,这些参数在 httpd.conf 中有效:
StartServers,
MaxClients,
MinSpareThreads,
MaxSpareThreads,
ThreadsPerChild,
MaxRequestsPerChild
检查此链接:http://www.howtoforge.com/configuring_apache_for_maximum_performance
Section 3.5:
The MaxClients sets the limit on maximum simultaneous requests thatcan be supported by the server. No more than this much number of childprocesses are spawned. It shouldn't be set too low such that newconnections are put in queue, which eventually time-out and the serverresources are left unused. Setting this too high will cause the serverto start swapping and the response time will degrade drastically.Appropriate value for MaxClients can be calculated as: MaxClients =Total RAM dedicated to the web server / Max child process size
可在此处进行 Apache 性能调整 http://httpd.apache.org/docs/2.0/misc/perf-tuning.html ,跳至有关进程创建的部分,以获取有关上述配置选项的更多信息。
关于php - 我的脚本中是否存在内存泄漏,或者是另一个罪魁祸首?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11076410/
我有一个 if 语句,如下所示 if (not(fullpath.lower().endswith(".pdf")) or not (fullpath.lower().endswith(tup
然而,在 PHP 中,可以: only appears if $foo is true. only appears if $foo is false. 在 Javascript 中,能否在一个脚
XML有很多好处。它既是机器可读的,也是人类可读的,它具有标准化的格式,并且用途广泛。 它也有一些缺点。它是冗长的,不是传输大量数据的非常有效的方法。 XML最有用的方面之一是模式语言。使用模式,您可
由于长期使用 SQL2000,我并没有真正深入了解公用表表达式。 我给出的答案here (#4025380)和 here (#4018793)违背了潮流,因为他们没有使用 CTE。 我很欣赏它们对于递
我有一个应用程序: void deleteObj(id){ MyObj obj = getObjById(id); if (obj == null) { throw n
我的代码如下。可能我以类似的方式多次使用它,即简单地说,我正在以这种方式管理 session 和事务: List users= null; try{ sess
在开发J2EE Web应用程序时,我通常会按以下方式组织我的包结构 com.jameselsey.. 控制器-控制器/操作转到此处 服务-事务服务类,由控制器调用 域-应用程序使用的我的域类/对象 D
这更多是出于好奇而不是任何重要问题,但我只是想知道 memmove 中的以下片段文档: Copying takes place as if an intermediate buffer were us
路径压缩涉及将根指定为路径上每个节点的新父节点——这可能会降低根的等级,并可能降低路径上所有节点的等级。有办法解决这个问题吗?有必要处理这个吗?或者,也许可以将等级视为树高的上限而不是确切的高度? 谢
我有两个类,A 和 B。A 是 B 的父类,我有一个函数接收指向 A 类型类的指针,检查它是否也是 B 类型,如果是将调用另一个函数,该函数接受一个指向类型 B 的类的指针。当函数调用另一个函数时,我
有没有办法让 valgrind 使用多个处理器? 我正在使用 valgrind 的 callgrind 进行一些瓶颈分析,并注意到我的应用程序中的资源使用行为与在 valgrind/callgrind
假设我们要使用 ReaderT [(a,b)]超过 Maybe monad,然后我们想在列表中进行查找。 现在,一个简单且不常见的方法是: 第一种可能性 find a = ReaderT (looku
我的代码似乎有问题。我需要说的是: if ( $('html').attr('lang').val() == 'fr-FR' ) { // do this } else { // do
根据this文章(2018 年 4 月)AKS 在可用性集中运行时能够跨故障域智能放置 Pod,但尚不考虑更新域。很快就会使用更新域将 Pod 放入 AKS 中吗? 最佳答案 当您设置集群时,它已经自
course | section | type comart2 : bsit201 : lec comart2 :
我正在开发自己的 SDK,而这又依赖于某些第 3 方 SDK。例如 - OkHttp。 我应该将 OkHttp 添加到我的 build.gradle 中,还是让我的 SDK 用户包含它?在这种情况下,
随着 Rust 越来越充实,我对它的兴趣开始激起。我喜欢它支持代数数据类型,尤其是那些匹配的事实,但是对其他功能习语有什么想法吗? 例如标准库中是否有标准过滤器/映射/归约函数的集合,更重要的是,您能
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 关闭 9 年前。 Improve
我一直在研究 PHP 中的对象。我见过的所有示例甚至在它们自己的对象上都使用了对象构造函数。 PHP 会强制您这样做吗?如果是,为什么? 例如: firstname = $firstname;
...比关联数组? 关联数组会占用更多内存吗? $arr = array(1, 1, 1); $arr[10] = 1; $arr[] = 1; // <- index is 11; does the
我是一名优秀的程序员,十分优秀!