przedstawia Mariusz Gil



Podobne dokumenty
Embedded GNU/Linux. Krzysztof Mazur

Instalacja cross-compilatora Inne elementy. Gentoo. Krzysztof Mazur. June 25, 2014

Projektowanie i implementacja wysokowydajnych aplikacji w języku

Programowanie Komponentowe WebAPI

Tworzenie oprogramowania

IBM SPSS Statistics - Essentials for R: Instrukcje instalacji dla Linux

Wykład V. Rzut okiem na języki programowania. Studia Podyplomowe INFORMATYKA Podstawy Informatyki

Opis wdrożenia Platformy Technologicznej epodreczniki.pl na zasobach Poznańskiego Centrum Superkomputerowo-Sieciowego

Rozwiązania bazodanowe EnterpriseDB

ROZSZERZAJĄC FUNKCJONALNOŚCI MEMCACHED

Need for speed. Kliknij, aby edytować style wzorca tekstu jak sobie radzić z dużą ilością użytkowników i danych

Projekt inżynierski podręcznik użytkownika

Skalowalne aplikacje internetowe wysokiej dostępności

BUDOWA APLIKACJI NA PLATFORMĘ IPHONE/IPAD. dr inż. Marcin Tomana

PureSystems zautomatyzowane środowisko aplikacyjne. Emilia Smółko Software IT Architect

Wymagania systemowe Dla przedsiębiorstw i średnich firm

Tworzenie aplikacji bazodanowych

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Programista do działu testów PDT/1401/T/TBG

Tworzenie aplikacji Web Alicja Zwiewka. Page 1

Ruby i Ruby on Rails. Mateusz Drożdżyński

Service Pack 1 z poprawką krytyczną Wymagania systemowe Dla przedsiębiorstw i średnich firm

Dotacje na innowacje. Inwestujemy w waszą przyszłość.

PROGRAM RESELLERSKI. Migracja sklepu z licencji samodzielnej na SaaS Case study. Program Resellerski Shoper

Kompilacja image z CVS

K. Konopko; Toolchain. Jądro Linuksa. dr inż. Krzysztof Konopko

W celu uruchomienia kontrolera należy w katalogu głównym kontrolera z wiersza poleceń wydać następujące polecenie: $ java -jar target/floodlight.

TECHNOLOGICALLY TOUCHED

Przetwarzanie i zabezpieczenie danych w zewnętrznym DATA CENTER

SPRING FRAMEWORK. dr inż. Jakub Chłapioski

która metoda jest najlepsza

Informatyka na UG... Witold Bołt

Referat Pracy Dyplomowej

Podstawy programowania wykład

Jak usprawnić tworzenie i zarządzanie stroną na drupalu. Maciej Łukiański

Firebird Alternatywa dla popularnych darmowych systemów bazodanowych MySQL i Postgres

Systemy Rozproszone Technologia ICE

Wymagania systemowe. Dla przedsiębiorstw i średnich firm

Szczegółowy harmonogram rzeczowy realizacji prac systemu B2B

System operacyjny Linux

Czym jest Java? Rozumiana jako środowisko do uruchamiania programów Platforma software owa

Instalacja serwera baz danych PostgreSQL ze źródeł i pierwsze uruchomienie

WPROWADZENIE. Użycie PHP

Puppet Jak zacząć? Marcin Piebiak Linux Polska sp. z o.o.

Projektowanie zabezpieczeń Centrów Danych oraz innych systemów informatycznych o podwyższonych wymaganiach bezpieczeństwa

INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE

MAMP Mac + Apache + MySQL + PHP. Kraków 8 czerwca 2009, Adam Strzelecki,

Typy przetwarzania. Przetwarzanie zcentralizowane. Przetwarzanie rozproszone

Programowanie I. Wprowadzenie. Proces programowania

Visual VM, Java Management extension i inne ciekawostki

Czym jest jpalio? jpalio jpalio jpalio jpalio jpalio jpalio jpalio jpalio

U M L. System operacyjny Linux zagnieżdżony w zewnętrznym systemie operacyjnym (Linux)

KOMPILACJA BLENDERA z cmake

Open Source w służbie developerom

Wirtualny Desktop i Aplikacje

TESTOWAĆ TESTOWAĆ TESTOWAĆ TESTOWAĆ TESTOWAĆ TESTOWAĆ TESTOWAĆ

Historia modeli programowania

Platforma GitHub. 1 Cel laboratoriów. 2 GitHub. 2.1 Git. źródeł.

Struktury systemów operacyjnych

mobilne rozwiązania

Test oszczędności energii w zastosowaniu dodatku ceramicznego do farb Insuladd

K. Konopko; Toolchain. Toolchain. dr inż. Krzysztof Konopko

Projektowanie rozwiązań Big Data z wykorzystaniem Apache Hadoop & Family

Cloud Customers Relationships Wymagania wersja systemu:

Projekt: Living Graft portal intranetowy

Serwery. Autorzy: Karol Czosnowski Mateusz Kaźmierczak

Java - wprowadzenie. Programowanie Obiektowe Mateusz Cicheński

Dokumentacja kompilacji źródeł aplikacji 1.0

Podstawy programowania. Wprowadzenie

Instalacja oprogramowania Rigel Med-eBase dla systemów Windows XP, 7 oraz 8.

OpenLaszlo. OpenLaszlo

Programowanie wizualne

Środowisko publikacyjne oparte na XML-u. Szymon Zioło 1 maja 2004

Komputery przemysłowe i systemy wbudowane

Autor: inż. Wojciech Zatorski Opiekun pracy: dr inż. Krzysztof Małecki

Projektowanie, tworzenie aplikacji mobilnych na platformie Android

Łukasz Przywarty Wrocław, r. Grupa: WT/N 11:15-14:00. Sprawozdanie z zajęć laboratoryjnych: OpenSSL - API

Języki i narzędzia programowania III. Łukasz Kamiński Wykład II

Dane bezpieczne w chmurze

Nowoczesny dział IT w chmurze

Architektury Usług Internetowych. Laboratorium 2. Usługi sieciowe

Projekt Fstorage. Łukasz Podkalicki Bartosz Kropiewnicki

Cloud Computing wpływ na konkurencyjność przedsiębiorstw i gospodarkę Polski Bohdan Wyżnikiewicz

#1milionIKO 1 milion aktywnych aplikacji IKO. Warszawa, 6 grudnia 2016 r.

Programowanie w Ruby

O nas. Usługi. jpbs realizuje następujące rodzaje projektów usługowych:

NPE X Języki programowania

Instrukcja instalacji oprogramowania dla środowiska MacOS

Organizacyjnie. Prowadzący: dr Mariusz Rafało (hasło: BIG)

OPIEKUN MEDYCZNY 15:00-15:45 SPOTKANIE ORGANIZACYJNE 15:45-16:30 OPIEKA NAD OSOBĄ CHORĄ 16:30-17:15 OPIEKA NAD OSOBĄ CHORĄ PIĄTEK.

Obiektowy model dokumentu. Katedra Mikroelektroniki i Technik Informatycznych

Praca przejściowa. Sklep internetowy. Tomasz Konopelski ZIP50-IWZ Katowice 2006

Rys. 1. Widok uruchomienia polecenia apt-get install build-essential. Rys. 2. Widok uruchomienia polecenia apt-get install apache2

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

MeetingHelper. Aplikacja Android ułatwiająca przekazywanie materiałów pomiędzy uczestnikami spotkania. Instrukcja obsługi dla programisty

Przyspiesz swój biznes i obniż koszty dzięki IBM FlashSystems. Artur Król Artur.Krol@pl.ibm.com Senior Storage Sales Consultant

Architektura systemów webowych wysokiej przepustowości. na przykładzie Wikia

Rozproszone systemy internetowe. Wprowadzenie. Koncepcja zdalnego wywołania procedury

VMware, QEMU, UML. oraz inne wirtualne maszyny. Piotr Findeisen Filip Grządkowski Piotr Kuśka Krzysztof Mroczek

Transkrypt:

przedstawia Mariusz Gil

BIO 2

3

Gru 2004 Gru 2005 Gru 2006 Lis 2007 Sie 2008 Gru 2009 Paź 2010 Lut 2011 700,00 650,00 525,00 550,00 350,00 350,00 175,00 0 1,00 5,50 100,00 50,00 12,00 Liczba użytkowników Facebooka (w mln) 4

650 mln użytkowników 70% użytkowników pochodzi spoza USA 700 mld odsłon mies. 100 mln zdjęć dziennie 9.5% ruchu Internetu 5

60.000 serwerów 9 data centers w USA 4.5 MW zużycia prądu 25.000 stóp powierzchni 50 mln $ kosztów Projekt Prineville 6

7

C++ Java C# Erlang Python Perl PHP Ruby 60,00 59,10 59,20 45,00 30,00 15,00 10,80 20,20 33,80 0 1,00 1,80 2,90 CPU MEAN http://shootout.alioth.debian.org/u64q/benchmark.php?test=all&lang=all 8

Wniosek? 9

PHP jest wolne 10

Tak, ale... 11

PHP łatwo się uczy PHP łatwo się pisze PHP łatwo się czyta PHP łatwo się debuguje 12

Jak przyspieszyć aplikację w PHP? 13

Cache danych i widoków Opcode caching Optymalizacja algorytmów i kodu Buildowanie kodu aplikacji Przenoszenie kodu do PHP Extensions Tuning PHP: kompilacja z ICC, patche 14

Facebook ma wszystko 15

Ale dalej walczy o szybkość swojej aplikacji 16

Facebook HipHop dla PHP 17

Historia 18

HPHP / HPHPi 19

Jak to działa? 20

Stos technologiczny load balancer load balancer serwer aplikacyjny serwer aplikacyjny w 6 miesięcy po produkcyjnym wdrożeniu 90% ruchu obsługiwane jest przez HipHop 21

50% oszczędności CPU 50% oszczędności RAM 30% oszczędności CPU przy dwukrotnie większym ruchu z API szybsze wykonanie kodu brak Apache mniej hardware 22

PHP 5.2, $max = 1.000.000 PHP 5.2, $max = 5.000.000 HipHop, $max = 1.000.000 HipHop, $max = 5.000.000 700,00 700,00 525,00 350,00 175,00 0 150,00 47,00 17,00 Ilość potrzebnej pamięci dla: for ($i = 1; $i < $max; $i++) { $a[] = $i } 23

Lut 2010 Wrz 2010 1,80 1,80 1,35 1,00 0,90 0,45 0 Relatywny wzrost szybkości HipHop dla PHP w pierwszych 6 miesiącach po premierze 24

Wrz 2010 Paź 2010 Lis 2010 Gru 2010 Lut 2011 Mar 2011 1,70 1,50 1,70 1,28 1,15 1,27 1,32 1,00 0,85 0,43 0 Relatywny wzrost szybkości HipHop dla PHP w ostatnich 6 miesiącach 25

Ostatnie zmiany to... 26

Support dla APC SHM Szybsza serializacja i kodowanie JSON Mniej liczenia referencji do zmiennych Szybsza kompilacja Mniejsze pliki wynikowe Lepsza alokacja pamięci 27

Świetnie to wygląda! 28

Gdzie jest haczyk? 29

Wsparcie do PHP 5.2, 99.5% kompatybilności Problem z brakiem PHP Extensions Brak niektórych funkcji Wskazana znajomość języków C/C++ 30

XHProf ponad XDebug Specyficzne wymagania serwerowe Platforma 64 bitowa Błędy w HipHopie 31

Dla kogo? 32

Getting started 33

http://github.com/facebook/hiphop-php/ 34

sudo apt-get install cmake g++ libboost-dev flex bison re2c libmysqlclientdev libxml2-dev libmcrypt-dev libicu-dev openssl binutils-dev libcap-dev libgd2-xpm-dev zlib1g-dev libtbb-dev libonig-dev libpcre3-dev git-core autoconf libtool libcurl4-openssl-dev libboost-system-dev libboost-programoptions-dev libboost-filesystem-dev mkdir hiphop cd hiphop git clone git://github.com/facebook/hiphop-php cd hiphop-php export CMAKE_PREFIX_PATH=`/bin/pwd`/../ export HPHP_HOME=`/bin/pwd` export HPHP_LIB=`/bin/pwd`/bin git submodule init git submodule update cd.. wget http://www.monkey.org/~provos/libevent-1.4.13-stable.tar.gz tar -xzvf libevent-1.4.13-stable.tar.gz cd libevent-1.4.13-stable cp../hiphop-php/src/third_party/libevent.fb-changes.diff. patch < libevent.fb-changes.diff./configure --prefix=$cmake_prefix_path make make install cd.. wget http://curl.haxx.se/download/curl-7.20.0.tar.gz tar -xvzf curl-7.20.0.tar.gz cd curl-7.20.0 cp../hiphop-php/src/third_party/libcurl.fb-changes.diff. patch -p0 < libcurl.fb-changes.diff./configure --prefix=$cmake_prefix_path make make install cd.. cd hiphop-php cmake. make 35

Alternatywy? 36

Roadsend PHP PHP kompilowane do C, http://www.roadsend.com/ PHC compiler PHP kompilowane do C, http://www.phpcompiler.org/ Quercus Implementacja PHP w Java, http://www.caucho.com/resin-3.0/quercus/ Phalanger PHP kompilowane do.net, http://www.php-compiler.net/ 37

przedstawia Dziękuję za uwagę mariusz.gil@scalability.pl Mariusz Gil