Slide 1

Slide 1 text

Be smart, be fast With Web Debug Toolbar and Blackfire.io

Slide 2

Slide 2 text

Web Debug Toolbar

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

Performance

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

blackfire.io

Slide 8

Slide 8 text

X-Blackfire-Query BLACKFIRE_QUERY

Slide 9

Slide 9 text

No content

Slide 10

Slide 10 text

No content

Slide 11

Slide 11 text

The Wall Clock Time, or Wall Time, for a function call is the measure of the real time it took for PHP to execute its code: the difference between the time at which PHP entered the function and the time at which PHP left the function

Slide 12

Slide 12 text

The CPU time is the amount of time the CPU was used for processing instructions.

Slide 13

Slide 13 text

The I/O time is the time the CPU waited for input/output (I/O) operations.

Slide 14

Slide 14 text

Network activity includes calls to databases like MySQL, PostreSQL, or MongoDB; HTTP calls to web services and APIs; calls to cache systems like Redis and Memcached; communications with services like queues, email daemons, remote filesystems; etc.

Slide 15

Slide 15 text

Disk activity occurs when a program reads files from the filesystem, including when PHP loads a script or class file.

Slide 16

Slide 16 text

Wall Time = CPU Time + I/O Time I/O Time = Network Time + Disk Time

Slide 17

Slide 17 text

The inclusive time allows you to find the critical path of an application.

Slide 18

Slide 18 text

The exclusive time allows to find the function calls to optimize first.

Slide 19

Slide 19 text

blackfire --samples=1 curl http://www.goldenline.pl/ Blackfire cURL completed Graph URL https://blackfire.io/profiles/dce9448e-be85-4312-9021-760a5e27a67e/graph Wall Time 228ms CPU Time 191ms I/O Time 37ms Memory 43.5MB Network n/a SQL n/a

Slide 20

Slide 20 text

No content

Slide 21

Slide 21 text

No content

Slide 22

Slide 22 text

blackfire run php palindrome.php Blackfire Run completed Graph URL https://blackfire.io/profiles/b9a7eafa-cd2f-49f9-b955-5667ac76fa33/graph Wall Time 2.59ms CPU Time 1.14ms I/O Time 1.45ms Memory 18.8KB Network n/a SQL n/a

Slide 23

Slide 23 text

Graph

Slide 24

Slide 24 text

No content

Slide 25

Slide 25 text

No content

Slide 26

Slide 26 text

References

Slide 27

Slide 27 text

blackfire --samples=1 --new-reference curl http://www.goldenline.pl/ Blackfire cURL completed Graph URL https://blackfire.io/profiles/4cf06d0d-afab-484c-ba7a-c7377f7c4e48/graph Reference: #1. Untitled Wall Time 233ms CPU Time 228ms I/O Time 4.75ms Memory 43.4MB Network n/a SQL n/a

Slide 28

Slide 28 text

blackfire --samples=1 --reference=1 curl http://www.goldenline.pl/ Blackfire cURL completed Graph URL https://blackfire.io/profiles/compare/4cf06d0d-afab-484c-ba7a-c7377f7c4e48... 5e719fd0-5839-4495-866a-142181a0f4a1/graph Wall Time 207ms -26ms -14.5% CPU Time 176ms -52ms -14.5% I/O Time 30.6ms +25.9ms +45.8% Memory 43.4MB +8.88KB n/s Network 13µs 294B 1rq SQL n/a -

Slide 29

Slide 29 text

No content

Slide 30

Slide 30 text

No content

Slide 31

Slide 31 text

Recommendations

Slide 32

Slide 32 text

blackfire --samples=1 --reference=1 curl http://www.goldenline.pl/ Blackfire cURL completed Graph URL https://blackfire.io/profiles/compare/4cf06d0d-afab-484c-ba7a-c7377f7c4e48... 5e719fd0-5839-4495-866a-142181a0f4a1/graph 1 recommendation https://blackfire.io/profiles/5e719fd0-5839-4495-866a-142181a0f4a1/graph?set tings%5BtabPane%5D=recommendations Wall Time 207ms -26ms -14.5% CPU Time 176ms -52ms -14.5% ...

Slide 33

Slide 33 text

No content

Slide 34

Slide 34 text

Assertions

Slide 35

Slide 35 text

.blackfire.yml tests: "Home Page": path: "/" assertions: - metrics.redis.connections.count == 1 - metrics.amqp.connections.count == 0 - main.memory < 40Mb

Slide 36

Slide 36 text

https://blackfire.io/docs/validator

Slide 37

Slide 37 text

No content

Slide 38

Slide 38 text

No content

Slide 39

Slide 39 text

Writing assertions on the main profile costs is as easy as adding a valid dimension name to the main. Prefix: ● count ● wall_time ● cpu_time ● memory ● peak_memory ● io ● network_in ● network_out

Slide 40

Slide 40 text

Test Scenarios

Slide 41

Slide 41 text

.blackfire.yml scenarios: Pricing page: - /pricing Integrations page: - /integrations Blackfire.yml Validator: - path: /docs/validator method: POST samples: 10

Slide 42

Slide 42 text

Only for HTTP requests, not CLI command

Slide 43

Slide 43 text

Blackfire and PHPUnit

Slide 44

Slide 44 text

composer require blackfire/php-sdk