Каково самое быстрое решение для веб-сервера с самым низким объемом потребляемой памяти? [закрытый]

В Java все переменные, которые вы объявляете, на самом деле являются «ссылками» на объекты (или примитивы), а не самими объектами.

При попытке выполнить один метод объекта , ссылка просит живой объект выполнить этот метод. Но если ссылка ссылается на NULL (ничего, нуль, void, nada), то нет способа, которым метод будет выполнен. Тогда runtime сообщит вам об этом, выбросив исключение NullPointerException.

Ваша ссылка «указывает» на нуль, таким образом, «Null -> Pointer».

Объект живет в памяти виртуальной машины пространство и единственный способ доступа к нему - использовать ссылки this. Возьмем этот пример:

public class Some {
    private int id;
    public int getId(){
        return this.id;
    }
    public setId( int newId ) {
        this.id = newId;
    }
}

И в другом месте вашего кода:

Some reference = new Some();    // Point to a new object of type Some()
Some otherReference = null;     // Initiallly this points to NULL

reference.setId( 1 );           // Execute setId method, now private var id is 1

System.out.println( reference.getId() ); // Prints 1 to the console

otherReference = reference      // Now they both point to the only object.

reference = null;               // "reference" now point to null.

// But "otherReference" still point to the "real" object so this print 1 too...
System.out.println( otherReference.getId() );

// Guess what will happen
System.out.println( reference.getId() ); // :S Throws NullPointerException because "reference" is pointing to NULL remember...

Это важно знать - когда больше нет ссылок на объект (в пример выше, когда reference и otherReference оба указывают на null), тогда объект «недоступен». Мы не можем работать с ним, поэтому этот объект готов к сбору мусора, и в какой-то момент VM освободит память, используемую этим объектом, и выделит другую.

25
задан Robert Koritnik 18 February 2012 в 15:45
поделиться

12 ответов

У меня был хороший опыт с nginx ( https://nginx.org / ), однако, при выборе веб-сервера, необходимо пристально смотреть требования и сделать обоснованное решение, поскольку эти вещи могут быть очень специализированы.

Вы заметите, что в этом вопросе, что много людей рекомендует g-wan, Webmachine, и т.д...., это все вещи, которые необходимо посмотреть на и сравнительный тест, чтобы видеть, быстрее ли они для варианта использования.

Это - вид вопроса, который поощряет черлидинг, нет никакого "правильного ответа".

41
ответ дан Cœur 28 November 2019 в 17:38
поделиться

Так как Вы упомянули Python, Вы могли бы хотеть смотреть на web.py для очень простого способа послушать на порте 80 и отобразить URL на действия.

Это будет также работать через Ваш любимый CGI, если Вы захотите соединиться со стандартным веб-сервером (т.е. позади Nginx/FastCGI) - и я буду второй обращение внимание Nginx для серьезного параллелизма на статических файлах. (Они использовали его с Lighttpd в Reddit.)

thttpd является другим веб-сервером, я посмотрел бы на, особенно если память чрезвычайно недостаточна, как во встроенной системе.

2
ответ дан joelhardi 28 November 2019 в 17:38
поделиться

Mochiweb является супер легким весом и обрабатывает глупо высокую загрузку.

7
ответ дан madlep 28 November 2019 в 17:38
поделиться

Существует статья о IBM developerWorks с довольно обширным списком "легких" веб-серверов:
Легкие веб-серверы: http://www.ibm.com/developerworks/web/library/wa-ltwebserv/

7
ответ дан Harry Tsai 28 November 2019 в 17:38
поделиться

Lighttpd имеет превосходное место, до такой степени, что большая часть Вашей памяти будет, вероятно, поднятый любым языком, который Вы принимаете решение использовать (если Вы не идете путем C, который действительно не рекомендуется).

8
ответ дан Edward Z. Yang 28 November 2019 в 17:38
поделиться

Как один из авторов Webmachine, я рад выручить Вас. Одна причина я - развитие, состоит в том, что даже при том, что нет никакого JSON-связанного кода в Webmachine, Вы могли бы найти полезным знать, что мы используем его ежедневно для обработки многих различных запросов JSON и ответов. Это просто, чисто расширяемо, и работает обоснованно хорошо.

, Если бы Вы просто хотели статическую доставку, тогда что-то как nginx или lighttpd было бы очевидным способом пойти. Для соединения статических и динамических запросов и встроенного хорошего веб-поведения, можно найти Webmachine хорошей подгонкой.

Выезд тривиальный пример кода в http://code.google.com/p/webmachine/wiki/ExampleResources и недавние сообщения на блоге в http://blog.therestfulway.com/ для получения дополнительной информации.

Это удалось хорошо для нас; если у Вас есть вопросы, не стесняются написать мне.

11
ответ дан Matt Ball 28 November 2019 в 17:38
поделиться

Веб-сервер Cherokee на www.cherokee-project.com

9
ответ дан 28 November 2019 в 17:38
поделиться

Взгляните на klone на сайте koanlogic.com ... будучи ориентированным на встраиваемые системы, он очень маленький и, кстати, очень быстрый: http://john.freml.in / teepeedee2-vs-klone . Он может быть написан на C / C ++ (сверхпроизводительный) или на обычном PHP / CGI (намного менее производительный), в зависимости от навыков / вкуса ...

1
ответ дан 28 November 2019 в 17:38
поделиться

Для измерения следа, посмотрите на исполняемый размер (не забудьте общие библиотеки).

TrustLeap G-Wan (150 КБ, нет зависимостей) предлагает Java, C / C ++, объективные сценарии C и D.

Согласно этим тестам, он также использует меньше ресурсов памяти и процессоров, чем Nginx или Lighttpd, когда работает быстрее:

http://www.gwan.ch/benchmark

9
ответ дан 28 November 2019 в 17:38
поделиться

Если бы можно было кодировать на Си или Си++, я думаю, что lighttz был бы самым быстрым и использовал меньше всего памяти. Однако, причина этого в том, что он использует libev и у него нет абсолютно ничего, нет поддержки php, нет поддержки html - ничего. Все, что она предоставляет - это функция обратного вызова, где u обрабатывает каждый http запрос. Вам придется разобрать http GET/POST запрос и вернуть html в виде строки. Вы можете увидеть, что она сравнивается с nginx, lighttpd, apache и т.д. и подняться наверх (link).

1
ответ дан 28 November 2019 в 17:38
поделиться

Вы можете взглянуть на FAPWS (быстрый асинхронный сервер Python WSGI). Философия проекта полностью соответствует вашим потребностям. http://www.fapws.org

1
ответ дан 28 November 2019 в 17:38
поделиться

Самый быстрый встроенный веб-сервер - это Snorkel - посмотрите его веб-сайт, они уничтожили nginx в моем тестировании с помощью ab. http://sites.google.com/site/snorkelembedded

4
ответ дан 28 November 2019 в 17:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: